Mybatis-Plus

还在写CURD?试试这款基于mybatis-plus的springboot代码生成器

好久不见. 提交于 2020-05-03 16:05:08
目录 ⚡Introduction ✔️Release Features Quick Start Examples 1.Controller模板代码示例 2.Service模板代码示例 3.ServiceImpl模板代码示例 ⚡Introduction 这是一个基于mybatis-plus官方的AutoGenerator代码生成器+定制代码模板的 springboot代码生成器 。 使用这个生成器你可以在1分钟之内生成数据库表对应的实体类,以及Mapper,Service,Controller层的基本CURD代码,并可以立即运行测试接口。 如果你不了解什么是mybatis-plus,请参考 官方文档 本代码生成器具有以下优点: 只需三步,即可开始测试CURD接口 生成的代码风格良好,注释详细(遵循阿里巴巴开发规范) 带有程序执行日志打印和错误日志打印 ✔️Release 立即前往: 发布地址 ⭐️Features 实现controller restful风格CURD接口 service层CURD对IService的方法再次封装,方便添加业务逻辑 serviceImpl中方法实现执行日志打印 mapper模板在官方模板基础上加入@mapper注解 各模板方法添加Javadoc注释 实现分页查询,关键词模糊查询(需自定义字段) 👉Quick Start 动画演示 : 使用步骤:

java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】

人盡茶涼 提交于 2020-05-02 04:37:02
一、概述 三款框架的功能对比 Mybatis-generator 通用Mapper Mybatis-Plus 代码生成器 支持自动生成Model,Mapper,Mapper XML文件 生成方式不够灵活; 生成代码功能较为简单 支持自动生成Entity,Mapper,Mapper XML文件; 提供通用的Mapper模板,生成方式较灵活; 生成的Model文件包含注释能够很好地与数据库表完成映射 支持自动生成Entity,Mapper,Mapper XML,Service,Controller文件; 提供BaseMapper接口 CRUD操作 代码生成后每个Mapper有固定的CRUD方法; 在每个Mapper上分别扩展 提供通用Mapper接口;方便构造统一service 可以扩展通用接口 提供BaseMapper接口; 可以扩展通用接口 条件构造器 每个实体类自己的Example构造条件【对象方式】 提供通用Example【构建sql】 提供Wrapper进行复杂条件构造 乐观锁 支持 支持 主键策略 支持 支持 分页 支持 逻辑删除 支持 通用枚举 支持 攻击Sql阻断 支持 性能分析 支持   通用Mapper是对Mybatis-generator的升级改造,解决了使用Mybatis-generator可能需要大量重构的问题,并且在这个基础上加入了一些新的功能。  

Java 项目创建 -- 统一结果处理、统一异常处理

一世执手 提交于 2020-04-27 13:51:13
一、IDEA 插件使用 1、说明   此处使用 SpringBoot 2.2.6 、JDK 1.8 、mysql 8.0.18 作为演示。   使用 IDEA 作为开发工具。 2、IDEA 插件 -- Lombok (1)简介   Lombok 能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString 等方法。   比如在实体类上使用 @Data 注解,就可以省去 getter、 setter 等方法的编写,但是在编译生成的字节码文件中有getter和setter方法。 (2)安装   Settings -> Plugins,搜索 Lombok。点击 install 安装后重启 IDEA 即可。 (3)使用 Step1:   使用 maven 添加依赖,引入对应的 jar 包。 <!-- https: // mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </dependency> Step2:   使用各种注解,简化代码编写。比如

开发六年mybatisplus使用小结

主宰稳场 提交于 2020-04-25 16:42:21
最近在项目里用到了一个第三方库,叫mybatisplus,是一个mybatis的增强库,简单来说就是增强了mybatis的功能,让mybatis更好用,mybatisplus给的官方定义是Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。http://mp.baomidou.com/#/这是mybatisplus的网站,有兴趣的可以自己看一下. 使用前需要增加maven的以来配置下面就简单说下他具体有哪些好用的功能 com.baomidou mybatis-plus 2.1.9 com.baomidou mybatisplus-spring-boot-starter 1.0.5 下面就简单说下他具体有哪些好用的功能. 1.BaseMapper集成单表crud功能 假如有一个实体类User,要使用mybatis实现增删改查需要写很多的xml配置文件来实现,但是用mybatisplus之后直接继承BaseMapper接口即可实现,无需编写任何的xml文件,代码如下 publicinterfaceUserMapperextendsBaseMapper{ }//继承之后即可直接使用BaseMapper中的增删改查方法,例如userMapper.selectById(id); userMapper

项目心得——mybatisplus注解

不羁岁月 提交于 2020-04-25 16:32:41
最近在做的项目中使用了mybatisplus,遇到了一些小问题,特此记录。 1、在sql查询后返回的数据中,会存在一些实体类中本没有的字段; 遇到这个问题时,我理所当然的就去实体类中添加了这个字段,但是bug马上就出现了: Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column ' manageName ' in ' field list ' ·原因写的很清楚了,表中没有这个字段。 这该怎么办呢?我们该用什么接收呢? 这就用到了我要说的第一个注解:@TableField 请各位注意看源码中的红色框框,属性exist,默认为true,也就是存在,我们可以设置为false,也就是不存在,就不会出现这个bug啦。 2、id的问题 问题的本院:由于 mybatis-plus 会自动插入一个 id 到实体对象, 无论你有没有封装, 所以有时候导致一些意外的情况发生。 mybatisplus中的id是要有这个注解的,但是这个注解是什么意思呢?我们继续看源码。 从IdType枚举类中我们可以看出,mybatisplus的id策略共有六种,我们可以根据业务的需求自行选择,这可以让我们在多表的增删改查中更加的灵活。 来源: oschina 链接: https://my.oschina.net/u

MyBatis-Plus学习笔记(1):环境搭建以及基本的CRUD操作

故事扮演 提交于 2020-04-21 08:29:49
MyBatis-Plus是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,使用MyBatis-Plus时,不会影响原来Mybatis方式的使用。 SpringBoot+MyBatis-Plus环境搭建 SQL脚本: CREATE TABLE `tb_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `real_name` varchar(20) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO tb_user (real_name,email,phone) VALUES ('小花','cf1@qq.com','18711111111'); INSERT INTO tb_user (real_name,email,phone) VALUES ('小菊','cf2@qq.com','18322222222'); INSERT INTO tb_user (real_name,email,phone) VALUES ('小熊','cf3@qq.com',

码云个人收集Java项目汇总

依然范特西╮ 提交于 2020-04-21 04:30:24
一 activiti 1 介绍 activiti技术实战。 2 地址 https://gitee.com/cakin24/activiti 二 imooc_mybatis-plus 1 介绍 慕课网《MyBatis-Plus入门》课程源码。 2 地址 https://gitee.com/cakin24/imooc_mybatis-plus 三 javatest 1 介绍 Java的各种测试小项目。 2 地址 https://gitee.com/cakin24/javatest 四 easypoi-test 1 介绍 EasyPoi技术实战。 2 地址 https://gitee.com/cakin24/easypoi-test 五 mybatis-plus-samples 1 介绍 MyBatis-Plus的官方示例。 2 地址 https://gitee.com/cakin24/mybatis-plus-samples 六 IDEA 1 介绍 慕课网IDEA的演示项目。 2 地址 https://gitee.com/cakin24/IDEA 七 RabbitMQDemo 1 介绍 朱忠华《RabbitMQ实战指南》配套代码。 2 地址 https://gitee.com/cakin24/RabbitMQDemo 八 Algorithm 1 介绍 《算法》第4版配套代码。 2 地址

MyBatis Plus Mapper CRUD接口测试

核能气质少年 提交于 2020-04-18 19:44:37
插入 插入一条记录 int insert(T entity); 删除 根据主键ID删除,主键ID支持String、Number类型 int deleteById(Serializable id); 根据主键ID批量删除 int deleteBatchIds(Collection<? extends Serializable> idList); 根据条件进行删除。原理为SQL语句拼接,因此Map中需要传输数据库字段列 实质为 delete from 表 where 【key1 = value1】 AND 【key2 = value2】 【key1-value1】【key2-value2】为Map的键值对 int deleteByMap(Map<String, Object> columnMap); 点赞 收藏 分享 文章举报 小大宇 发布了335 篇原创文章 · 获赞 263 · 访问量 30万+ 他的留言板 关注 来源: oschina 链接: https://my.oschina.net/u/4391872/blog/3274389

SpringBoot 系列教程 MybatisPlus 整合篇

旧时模样 提交于 2020-04-18 06:07:25
191231-SpringBoot 系列教程 MybatisPlus 整合篇 前面介绍了 SpringBoot 整合 Mybatis 实现 db 的增删改查操作,分别给出了 xml 和注解两种实现 mapper 接口的方式;虽然注解方式干掉了 xml 文件,但是使用起来并不优雅,本文将介绍 mybats-plus 的使用 case,简化常规的 CRUD 操作 <!-- more --> I. 环境 本文使用 SpringBoot 版本为 2.2.1.RELEASE , mybatis-plus 版本为 3.2.0 ,数据库为 mysql 5+ 1. 项目搭建 推荐使用官方的教程来创建一个 SpringBoot 项目; 如果直接创建一个 maven 工程的话,将下面配置内容,拷贝到你的 pom.xml 中 主要引入的是 mybatis-spring-boot-starter ,可以减少令人窒息的配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> <

Mybatis-plus 一对多关联查询,附JRebel热加载mapper.xml

只愿长相守 提交于 2020-04-18 00:29:36
1 public class Person extends PersonOthers{} 2 public class PersonOthers{ private List<Map<String,String>> otherList;} 1 public class PersonService { 2 3 @Resource 4 private PersonDao dao; 5 6 public List<Person> selectPlusQuery(QueryPersonDto query, Page<Person> page) { 7 String sql = "SELECT * FROM t_person_info" ; 8 QueryWrapper<Person> qw = new QueryWrapper<> (); 9 if ( null != query) { 10 String keyword = query.getKeyword(); 11 if (StringUtils.isNotBlank(keyword)) qw.like("person_name" , keyword); 12 } 13 return dao.selectPlusQuery(sql, page, qw); 14 } 15 } @Service @Repository public