2 Star 0 Fork 0

快乐的小菌菌 / junbatis

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
README 4.60 KB
AI 代码解读
一键复制 编辑 原始数据 按行查看 历史
快乐的小菌菌 提交于 2018-04-20 17:51 . left join初探
自己封装使用的MyBatis框架
目标是做到代码最大化的简洁,功能尽可能的丰富。
运行环境:gradle-4.6,idea,Lombok插件(idea插件),JDK1.8,MySql5.7
更新列表:
2018.3.29
1.SqlUtil工具类:
*****************
其中3,4,5返回的都是String[]数组
*****************
1.underlineHump(): 下划线转驼峰
2.humpUnderline(): 驼峰转下划线
3.sqlColumnBuilder(): 数据库表字段构建 *这个方法只为了把getClass之类的字段过滤掉,并且把POJO属性转成 下划线形式迎合数据库规范。
4.sqlConditionColumnBuilder(): 条件构建 *形如#{userName}
5.sqlAliasColumnBuilder(): 查询的字段(别名)*形如user_name AS userName
6.getTableName(): 获得表名的方法
2.@IgnoreColumn、@TableName两个注解实现
@IgnoreColumn:过滤字段,一般加在getxxx方法上,它的实现在sqlColumnBuilder()中集中实现,并在sqlConditionColumnBuilder()、sqlAliasColumnBuilder()中引用并加以处理。
@TableName: 获取表名,加在类上,参数可写可不写,默认首字母小写为表名
3.RootObject
目前只是把id放在了这个class里,并根据是否是isDeclared条件控制是否带有父类(RootObject)里的属性。
2018.3.30
1.通用Service接口类,Service实现类封装。Service层统一继承两个类就可以了。
2.ConditionConstructor查询条件构造器实现,添加了EQUAL,NOT_EQUAL,LESS,GREAT,LESS_EQUAL,GREAT_EQUAL,LIKE关键字查询。
3.修改了部分bug。
2018.3.31
1.框架目录组成微调整。
2.加入了自定义Exception,有写自己一套异常处理类的意向。
3.insert批量功能的实现,ignoreColumn已支持。不需要储存的字段不set自动存null处理,datetime类型不能insert
4.修改了部分bug。
2018.4.01
1.delete可以根据条件删除了。开始着手收集Exception做集中管理。
2.update条件还未支持。
2018.4.02
1.update条件更新已支持。
2.update批量已支持更新父类属性。
3.删除了update单一数据的SqlBuilder中的方法,在GenericServiceImpl实现。
2018.4.03
1.支持or语句查询。*可以被多次调用,但在一行中多次调用或生成不稳定的SQL。
2018.4.04
1.分页功能初步实现,返回没有封装。
2018.4.19
1.懒了几天。。。咳!结构变化,更加方便依赖方便。
2.分页功能实现,返回没有封装。
3.根据id查询单个对象。
2018.4.20
1.结构变更,隐藏实现,和GenericServiceImpl相关的类放在了一起。大部分内聚方法对调用者隐藏。
2.支持查询列表,无分页。
3.条件删除bug修改。
4.支持order by子句。
5.left join 初探
Dao层功能:
select按条件简单的查询(and)
insert可以插入单一一条数据
insert可以批量数据。
delete可以根据删除
delete可以不用循环就可以批量删除。(按条件删除即可)
update可以按字段批量更新。(可以按条件更新)
update根据id更新
期望添加的功能:
1.insert不止只支持主键为Integer,也可以支持String。推荐Integer。
2.select可以最大化的丰富查询功能,join、or、and、order by、group by etc.等常用关键字查询。
3.select可以简单的支持某些函数。
...
持续更新中...
使用说明:
1.所有sql构建规则请参考:http://www.mybatis.org/mybatis-3/zh/statement-builders.html
2.框架中拼接sql的关键字符我并没有统一在常量类中定义,虽然应该这样做,但是我感觉直接硬编码在代码中会更加便于解读代码。而不需要再去看看这个常量对应的值是什么(往往需要对照的读代码)。又因为框架的东西一般不需要改的很严重,所以我觉得这么写无伤大雅。因为真的很便于解读,所以我就采用了这种编码的风格————适当的硬编码便于解读代码(我说的)......
3.查询构建使用ConditionConstructor.class。
4.LIKE查询需要自己写%,example:conditionConstructor.conditionAnd("%jun%", Condition.EQUAL, "user_name");
5.每个POJO都要自己重写toString()方法;
6.具体可以查看JunbatisApplicationTests测试类,有使用示例......
Java
1
https://gitee.com/jifujunasd/junbatis.git
git@gitee.com:jifujunasd/junbatis.git
jifujunasd
junbatis
junbatis
master

搜索帮助