Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段,无入侵全方位 ORM 辅助层让您拥有更多时间陪家人。
以下内容 以Mybatis-Plus 3.0.1版本 为蓝本;
详情见官方文档:
https://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A7
springboot2.0 集成 mybatis-plus
- pom引入所需jar包
-
<!-- mybatisPlus 核心库 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>3.1.0</version> </dependency> <!-- mybatis 代码自动生成器 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.1.0</version> </dependency> <!--mybatis-plus完成项目构建所需模板,真实项目不需要使用--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </dependency>
-
- 配置自动生成工具类
-
package org.xx.xx.db.util; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.util.ArrayList; import java.util.List; /** * @Description: * @Auther: wuxw * @Date: 2019/9/30 14:27 */ public class CodeGeneratorUtil { public static void main(String[] args) { //代码生成器 AutoGenerator mpg = new AutoGenerator(); //全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir") + "/litemall-db/"; gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("wuxw"); gc.setServiceName("%sService");//自定义Service接口生成的文件名 gc.setOpen(false); gc.setBaseResultMap(true); gc.setDateType(DateType.ONLY_DATE); mpg.setGlobalConfig(gc); //数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://127.0.0.1:3306/litemall?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("123456"); mpg.setDataSource(dsc); //包配置 PackageConfig pc = new PackageConfig(); pc.setParent("org.xxx.xxx.db") .setMapper("dao"); mpg.setPackageInfo(pc); //自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { //to do nothing } }; //自定义输出配置 List<FileOutConfig> focList = new ArrayList<>(); //自定义配置会优先输出 focList.add(new FileOutConfig("/templates/mapper.xml.ftl") { @Override public String outputFile(TableInfo tableInfo) { // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! return projectPath + "/src/main/resources/mappers/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); // 配置模板 TemplateConfig templateConfig = new TemplateConfig(); // 配置自定义输出模板 //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 // templateConfig.setEntity("templates/entity2.java"); // templateConfig.setService(); // templateConfig.setController(); templateConfig.setXml(null); mpg.setTemplate(templateConfig); //配置策略 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); //strategy.setSuperControllerClass("com.example.demo.model.BaseEntity"); strategy.setEntityLombokModel(false);//默认是false //strategy.setRestControllerStyle(true); //公共父类 //strategy.setSuperControllerClass("com.example.demo.controller.BaseController"); // 写于父类中的公共字段 //strategy.setSuperEntityColumns("id"); strategy.setInclude("tb_forum_replay"); // 仅生成单个表 strategy.setControllerMappingHyphenStyle(true); strategy.setTablePrefix("tb_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); System.out.println(" --------------------------自动生成完毕------------------------"); } }
-
- 实际开发
-
@Api(tags = "论坛主页") @RestController @RequestMapping("/admin/forum/") @Validated public class AdminForumController { } @Service public class ForumServiceImpl extends ServiceImpl<ForumMapper, Forum> implements ForumService { } @Mapper public interface ForumMapper extends BaseMapper<Forum> { } @Data @TableName("tb_forum") public class Forum implements Serializable { }
-
实际开发使用
Select
第一种 selectCount
QueryWrapper qw = new QueryWrapper(); qw.eq("user_id",userId); qw.eq("readed",0); baseMapper.selectCount(qw);
等同于
select count(*) from tb where use_id = #{userId} and readed =0
第二种selectOne
QueryWrapper qw = new QueryWrapper(); qw.eq("user_id",userId); qw.eq("readed",0); qw.last("limit 1"); baseMapper.selectOne(qw);
等同于
select count(*) from tb where use_id = #{userId} and readed =0 limit 1
update
第一种 set
UpdateWrapper uw = new UpdateWrapper(); uw.eq("user_id",userId); uw.eq("id",id); Forum f = new Forum(); f.setDeleted(1); return forumMapper.update(f,uw) > 0;
等同于
update forum set delete =1 where user_id = #{userId} and id = #{id}
第二种 insql
UpdateWrapper uw = new UpdateWrapper(); String[] idsStr =new String["1","2","3"]; String id = StringUtils.strip(idsStr.toString(),"[]"); uw.inSql("id",id); Forum f = new Forum(); f.setDeleted(1); return forumMapper.update(f,uw) > 0;
等同于
update forum set deleted = 1 where id in ( 1 , 2 ,3)
太太太哪里, 具体还是看官方文档吧
条件构造器
各种sql语义,让你用mybatisPlus 溜的飞起
allEq
eq
ne
...
最最最主要的还是
MybatisX 快速开发插件
- Java 与 XML 调回跳转
- Mapper 方法自动生成 XML
来源:oschina
链接:https://my.oschina.net/u/1995134/blog/3126298