【昭阳】开源第1弹 mybatis-genl
如果这篇文章对您有些用处,请点赞告诉我O(∩_∩)O
一、简介
1、genl:generate lightly,轻量生成mybatis数据层相关文件。
2、gitee地址:Ethan 姚/mybatis-genl
3、解决问题:
(1)mybatis自带的生成程序,generator.xml配置项过多,生成大量冗余文件。
(2)数据库修改字段后,重新生成文件与自定义代码冲突,需要手动处理。
(3)mybaits的Criteria滥用,不易sql调优&查错,需要限定免写sql的场景。
4、支持DB:mysql
二、安装与使用
1、pom.xml中添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>ognl</groupId><artifactId>ognl</artifactId><version>3.1.12</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency>
2、将genl.properties 放置到 src/main/resouces (完整文件在gitee)
(1)jdbc配置
jdbc.driverName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.username=XXXXX
jdbc.password=XXXXX
(2)需要生成表配置
table.schema为db名称,table.prefix按照前缀生成,table.names指定表名生成,两种生成方式只能二选一。
table.schema=mydb
table.prefix=portal_
#table.names=Table1, Table1
(3)生成文件配置
默认生成策略:
po覆盖(建议不要添加任何代码保持和数据库一致)
mapper不覆盖(BaseMapper,BaseMapperParams除外)
mapperXML半覆盖:在`<!-- O(∩_∩)O -->`以下部分属于自定义代码部分,不会覆盖,反之为系统生成部分会覆盖生成。
package.po=com.rt.portal.po
package.mapper=com.rt.portal.dao
path.mapperXML=src/main/resources/mapper
(4)非必要配置
#非必要,select查询limit默认条数,默认1000
BaseMapperParams.rows=5000
#非必要,是否重写,默认true
#override.po=false
3、main方法生成
public static void main(String[] args) throws IOException {MybatisGenL.generate();
}
三、Mapper API
1、insert 插入并返回主键id
int id = portalAccountMapper.insert(portalAccount);
2、insertBatch 批量插入,注意,不能依靠数据库默认值,必须设置所有属性。
portalAccountMapper.insertBatch(list);
3、deleteByPrimaryKey 按照主键删除
portalAccountMapper.deleteByPrimaryKey(8l);
4、update 按照主键修改
portalAccount = new PortalAccount();
portalAccount.setId(9l);
portalAccount.setAccountName("xxxxxxxxx");
portalAccountMapper.update(portalAccount);
5、selectByPrimaryKey 按照主键查询
PortalAccount portalAccount = portalAccountMapper.selectByPrimaryKey(5l);
6、selectByParams 按照BaseMapperParams自定义条件列表查询
依靠参数BaseMapperParams支持5种查询方式,支持分页,并可以通过clear()方法清空,从而复用。
注意,BaseMapperParams所有参数key对应于数据库字段,不是po属性。
BaseMapperParams params = new BaseMapperParams();
//等值查询:
params.addColumn("account_name", "bbb6");
//比较查询:
params.addCompareColumn("create_time", start, CompareTypeEnum.GE);
//between查询:
params.addBetweenColumn("create_time", start, end);
//in查询:
params.addInColumns("id", Arrays.asList(19, 20, 21, 24, 25, 26));
//like查询:
params.addLikeColumn("account_pass", "%0%"); //分页查询,默认限制查询行数为1000,可以通过配置修改,
params.setOffset(0); //起始偏移量
params.setRows(20); //查询行数
params.setOrderByClause("id desc"); //排序
//params.setPage(1, 20); //也可以直接设置pageNo,pageSize
List<PortalAccount> list = portalAccountMapper.selectByParams(params);
7、selectCountByParams 按照BaseMapperParams自定义条件列表数量查询
int count = portalAccountMapper.selectCountByParams(params);
8、selectOneByParams 根据BaseMapperParams自定义条件查询一个Entity,如果多个则返回第一个,如果没有则返回null
BaseMapperParams params = new BaseMapperParams();
params.addColumn("id", 21);
PortalAccount account = portalAccountMapper.selectOneByParams(params);
if (account != null) {System.out.println(account.getAccountName());
}
9、deleteByParams 按照BaseMapperParams自定义条件删除,key为数据库列
BaseMapperParams params = new BaseMapperParams();
params.addCompareColumn("id", 16, CompareTypeEnum.LT);
portalAccountMapper.deleteByParams(params);
10、updateByParams 按照BaseMapperParams自定义条件修改,key为数据库列
BaseMapperParams params = new BaseMapperParams();
params.addCompareColumn("id", 16, CompareTypeEnum.LT);
params.addUpdateColumn("account_name", "ppppp");
portalAccountMapper.updateByParams(params);
四、规范建议
1、SQL规范
mybatis-genl可用于的免写sql的场景:
(1)单表查询(in,like,比较,between,=)
(2)单表新增、修改、删除
除此之外,请自定义sql完成。
2、数据访问层代码规范
当使用xxxByParams方法时,由于直接使用数据库列名作为key,因此需要在Mapper或者DAO层封装后,再在Service使用。
public interface PortalAccountMapper extends BaseMapper<PortalAccount>{default PortalAccount selectAccountByUserNo(String userNo) {BaseMapperParams params = new BaseMapperParams();params.addColumn("user_no", userNo);return selectOneByParams(params);}
}
【昭阳】开源第1弹 mybatis-genl相关推荐
- r2000s_昭阳R2000S笔记本一键重装win7系统教程
昭阳R2000S笔记本一键重装win7系统教程.联想昭阳R2000S加固笔记本的多功能扩展坞设计和多类型数据接口配备,可以提供丰富全面的设备接口,帮助科考人员连接多样仪器设备,为科考人员打造灵活的应用 ...
- 昭阳E47A每天第一次开机启动速度慢的原因
摘自:昭阳E47 A每天第一次运行速度慢的原因 自己的电脑症状描述:电脑每天第一次开机启动速度都很慢,再关机重启问题不再出现,经百度找到如下答案,经实践问题解决,故把收集的资料整理于此,给遇到此问题的 ...
- 【战国策】之《齐策·昭阳为楚伐魏》
昭阳为楚伐魏,覆军杀将得八城.移兵而攻齐.陈轸为齐王使,见昭阳,再拜贺战胜,起而问:"楚之法,覆军杀将,其官爵何也?"昭阳曰:"官为上柱国,爵为上执珪."陈轸曰 ...
- 昭阳K2450笔记本安装Linux,可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程...
可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程 2016-07-04 16:56:47 22点赞 45收藏 94评论 一. 缘起 大家好,我是Neo . 如果要问什么 ...
- 联想K29昭阳K29笔记本联想K49A在dos下刷入bios教程
联想K29昭阳K29笔记本联想K49A在dos下刷入bios教程 本人也是小白一枚,平时也就会装个系统啥的,偶然得知低版本有我要的功能,所以走上了一条刷bios之路,各种教程搜,刷各种包,没有一条说的 ...
- 昭阳区计算机学校,2019昭通中职学校名单大全
据统计,2019年昭通共有16所具备招生资格的中职学校.中职学校以其就读时间短.就业率高.费用低等优势,成为越来越多初中毕业生的升学选择.待中职毕业后,实行双向选择,既可自主择业,也可以升入高职专科继 ...
- 昭阳E47G开机问题
笔记本电脑 型号:昭阳E47G 系统:win7旗舰版 问题:开机进不了系统,CMOS缺电导致不能存储BIOS的更改,有蓝屏现象 解决方法:进入BIOS更改硬盘模式为IDE,再进入系统,启动失败:使用P ...
- 联想笔记本电脑昭阳E40更换磁盘后开机读取不了boot程序
我有好几个联想笔记本电脑,thinkpad和昭阳e40.我把开机正常的thinkpad磁盘放到昭阳e40下面,发现e40不能正常开机.直接读取不到grub 后来发现因为thinkpad有个专门的存储存 ...
- 昭阳区计算机学校,昭阳区高级职业中学
昭阳区高级职业中学简介 昭阳区高级职业中学是昭阳区唯一公办的职业中学,距城区仅2公里,校园环境优美.学校占地260亩,现有教职员工132名,有多媒体教室27间;教学用计算机454台.学校开设有汽车制造 ...
- 我的第一个开源库-DialogLoading弹出加载框(Kotlin版)
我的第一个开源库-DialogLoading弹出加载框 关于 效果 第二种加载框 关于 第一个开源库很简单,主要是因为在写其他项目的时候要把这个加载框复制一遍,,觉得好麻烦,不如弄一个开源库直接引用好 ...
最新文章
- ORACLE数据库对比表结构
- 多核处理器_基于NXP i.MX8MM多核应用处理器设计的智能加油机
- densepose安装_基于DensePose的姿势转换系统,仅根据一张输入图像和目标姿势
- 专业对不对口重要吗_应届生求职,专业对口到底重不重要?
- 手动升级 Confluence - 规划你的升级
- Android开发学习之仿手机QQ消息列表侧滑删除效果
- Macbook Pro 使用小记
- 贪吃蛇c语言代贴吧,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
- 牛客练习赛63 牛牛的树行棋
- java常识-java怎么换行
- 总管家云CRM 解除业务员的后顾之忧
- 自学按键精灵写脚本,非常有用的一个函数
- 新手电脑硬件软件故障解答(一)
- TTL转RS232电平转换电路及工作原理
- 离散傅里叶变换到Z变换及收敛域分析-DTFT到ZT
- html 消除序号,JS实现删除一行数据页面序号重新排序功能。
- 安装AAE v11.x Control Room简易教程
- java代码实现十进制到二进制的转化
- html 实时曲线 js,基于d3.js实现实时刷新的折线图
- 关于参加学科竞赛的心得感想