如果这篇文章对您有些用处,请点赞告诉我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相关推荐

  1. r2000s_昭阳R2000S笔记本一键重装win7系统教程

    昭阳R2000S笔记本一键重装win7系统教程.联想昭阳R2000S加固笔记本的多功能扩展坞设计和多类型数据接口配备,可以提供丰富全面的设备接口,帮助科考人员连接多样仪器设备,为科考人员打造灵活的应用 ...

  2. 昭阳E47A每天第一次开机启动速度慢的原因

    摘自:昭阳E47 A每天第一次运行速度慢的原因 自己的电脑症状描述:电脑每天第一次开机启动速度都很慢,再关机重启问题不再出现,经百度找到如下答案,经实践问题解决,故把收集的资料整理于此,给遇到此问题的 ...

  3. 【战国策】之《齐策·昭阳为楚伐魏》

    昭阳为楚伐魏,覆军杀将得八城.移兵而攻齐.陈轸为齐王使,见昭阳,再拜贺战胜,起而问:"楚之法,覆军杀将,其官爵何也?"昭阳曰:"官为上柱国,爵为上执珪."陈轸曰 ...

  4. 昭阳K2450笔记本安装Linux,可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程...

    可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程 2016-07-04 16:56:47 22点赞 45收藏 94评论 一. 缘起 大家好,我是Neo . 如果要问什么 ...

  5. 联想K29昭阳K29笔记本联想K49A在dos下刷入bios教程

    联想K29昭阳K29笔记本联想K49A在dos下刷入bios教程 本人也是小白一枚,平时也就会装个系统啥的,偶然得知低版本有我要的功能,所以走上了一条刷bios之路,各种教程搜,刷各种包,没有一条说的 ...

  6. 昭阳区计算机学校,2019昭通中职学校名单大全

    据统计,2019年昭通共有16所具备招生资格的中职学校.中职学校以其就读时间短.就业率高.费用低等优势,成为越来越多初中毕业生的升学选择.待中职毕业后,实行双向选择,既可自主择业,也可以升入高职专科继 ...

  7. 昭阳E47G开机问题

    笔记本电脑 型号:昭阳E47G 系统:win7旗舰版 问题:开机进不了系统,CMOS缺电导致不能存储BIOS的更改,有蓝屏现象 解决方法:进入BIOS更改硬盘模式为IDE,再进入系统,启动失败:使用P ...

  8. 联想笔记本电脑昭阳E40更换磁盘后开机读取不了boot程序

    我有好几个联想笔记本电脑,thinkpad和昭阳e40.我把开机正常的thinkpad磁盘放到昭阳e40下面,发现e40不能正常开机.直接读取不到grub 后来发现因为thinkpad有个专门的存储存 ...

  9. 昭阳区计算机学校,昭阳区高级职业中学

    昭阳区高级职业中学简介 昭阳区高级职业中学是昭阳区唯一公办的职业中学,距城区仅2公里,校园环境优美.学校占地260亩,现有教职员工132名,有多媒体教室27间;教学用计算机454台.学校开设有汽车制造 ...

  10. 我的第一个开源库-DialogLoading弹出加载框(Kotlin版)

    我的第一个开源库-DialogLoading弹出加载框 关于 效果 第二种加载框 关于 第一个开源库很简单,主要是因为在写其他项目的时候要把这个加载框复制一遍,,觉得好麻烦,不如弄一个开源库直接引用好 ...

最新文章

  1. ORACLE数据库对比表结构
  2. 多核处理器_基于NXP i.MX8MM多核应用处理器设计的智能加油机
  3. densepose安装_基于DensePose的姿势转换系统,仅根据一张输入图像和目标姿势
  4. 专业对不对口重要吗_应届生求职,专业对口到底重不重要?
  5. 手动升级 Confluence - 规划你的升级
  6. Android开发学习之仿手机QQ消息列表侧滑删除效果
  7. Macbook Pro 使用小记
  8. 贪吃蛇c语言代贴吧,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  9. 牛客练习赛63 牛牛的树行棋
  10. java常识-java怎么换行
  11. 总管家云CRM 解除业务员的后顾之忧
  12. 自学按键精灵写脚本,非常有用的一个函数
  13. 新手电脑硬件软件故障解答(一)
  14. TTL转RS232电平转换电路及工作原理
  15. 离散傅里叶变换到Z变换及收敛域分析-DTFT到ZT
  16. html 消除序号,JS实现删除一行数据页面序号重新排序功能。
  17. 安装AAE v11.x Control Room简易教程
  18. java代码实现十进制到二进制的转化
  19. html 实时曲线 js,基于d3.js实现实时刷新的折线图
  20. 关于参加学科竞赛的心得感想

热门文章

  1. 科普计算机软硬件知识,科普显卡基础知识 让你更加了解显卡
  2. 【设计模式】我终于读懂了装饰者模式。。。
  3. 移动布局——流式布局
  4. 计算机网络管理员路由与交换深圳积多少分,深圳积分入户初级证可以 累积加分吗,你需要知道这些!...
  5. 人生之路小游戏代码2
  6. 输入平方尺转换为平方米 计算机,亩怎么转换平方米
  7. ios13全选手势_iOS13操作新手势:使用iPhone编辑文本更方便
  8. MySQL 设计与开发规范
  9. Linux宝塔控制面板如何实现多个二级域名301重定向跳转
  10. C# 枚举高级用法之Description