阅读原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html
视频教程:https://www.bilibili.com/video/av35595465
课程源码:https://github.com/ibywind/springboot-learn
关注公众号 查看更多技术干货
还可加群 , 众多好基友在等你
扫描关注上方公众号
回复关键字 boot
就可以下载这本书了
书籍的排版很好的,我自己也在看.大家可以一起交流哦
hello 大家好
欢迎大家收看御风大世界
本次课是
springboot 系列教程第13课
这节课我们将学习一个国人开发的
mybatis 增强框架
mybatis-plus
真的增强了不少啊 !!
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
我们的愿景是成为
Mybatis
最好的搭档,就像 魂斗罗 中的1P、2P,基友搭配,效率翻倍。
Gitee | Github
加入这两个依赖
com.baomidou
mybatis-plus-boot-starter
2.2.0
com.baomidou
mybatis-plus
2.1.9
package cn.bywind.boot;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class Generator {
public static void main(String[] args) {
// 包名
String packageName = "cn.bywind.boot";
boolean serviceNameStartWithI = false;//auth -> UserService, 设置成true: auth -> IUserService
//把需要自动生成的表 放在这里!!
generateByTables(serviceNameStartWithI, packageName, "bywind", "boot", "person");
generateByTables(serviceNameStartWithI, packageName, "bywind", "boot", "bluetooth");
System.out.println("completed...");
}
/**
* @param serviceNameStartWithI
* @param packageName 包名
* @param author 作者
* @param database 数据库名
* @param tableNames 表名
*/
private static void generateByTables(boolean serviceNameStartWithI, String packageName, String author, String database, String... tableNames) {
GlobalConfig config = new GlobalConfig();
String dbUrl = "jdbc:mysql://127.0.0.1:3306/" + database + "?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false";
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL)
.setUrl(dbUrl)
.setUsername("root")
.setPassword("123456")
.setDriverName("com.mysql.jdbc.Driver");
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setCapitalMode(true)
.setEntityLombokModel(false)
.setDbColumnUnderline(true)
.setNaming(NamingStrategy.underline_to_camel)
// .setSuperMapperClass("cn.saytime.mapper.BaseMapper")
.setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
config.setActiveRecord(false)
.setAuthor(author)
.setOutputDir("d:\\codeGen")
.setFileOverride(true)
.setEnableCache(false);
if (!serviceNameStartWithI) {
config.setServiceName("%sService");
}
new AutoGenerator().setGlobalConfig(config)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(
new PackageConfig()
.setParent(packageName)
.setController("www")
.setEntity("model")
.setMapper("mapper")
.setService("service")
.setServiceImpl("service.impl")
.setXml("mappers")
).execute();
}
}
生成了好多啊 !!我们拷贝到 我们的项目中 (不建议直接生成到项目 , 万一手滑 覆盖了 别人的 …..)
##mybatis-plus
mybatis-plus.mapper-locations=classpath:mappers/*.xml
mybatis-plus.type-aliases-package=cn.bywind.boot.model
# 修改xml 不用重启 调试神器
mybatis-plus.global-config.refresh-mapper=true
帮我们把 service实现都生成了
我们什么都不需要写
你看
真的什么都不用写
然后就可以做简单的 单表 增删改查了
package cn.bywind.boot;
import cn.bywind.boot.model.Person;
import cn.bywind.boot.service.PersonService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.plugins.Page;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class BootApplicationTests {
@Autowired
PersonService personService;
@Autowired
RedisTemplate redisTemplate;
@Test
public void contextLoads() {
}
@Test
public void testGetPerson(){
Person person = personService.selectById(1);
System.out.println(person);
}
@Test
public void testUpdatePerson(){
Person person = new Person();
person.setId(1);
person.setName("御风大世界");
personService.updateById(person);
}
@Test
public void testRedisAdd(){
redisTemplate.opsForValue().set("name","bywind");
}
@Test
public void testGetRedisResult(){
Object name = redisTemplate.opsForValue().get("name");
System.out.println("得到redis的值:"+name);
}
@Test
public void testPage(){
Page page = new Page<>();
page.setCurrent(0);
page.setSize(10);
Page personPage = personService.selectPage(page);
System.out.println(JSON.toJSONString(personPage));
}
}
测试效果
我们开启了 分页 插件 和 性能监控插件
并且 可以 设置 什么环境下 开启 这里我们 dev test 开启打印SQL执行时间
正式环境 他是不会打印的
我们的 maven 是有多个 profiles 的
分页插件上面我们已经演示了
这个框架还有很多其他的插件 很好用
大家可以参看他的文档 详细看下效果
选择自己适合的就好
这个插件
我们之前 都是自己写的
我说真的
我们自己写 读写分离的 逻辑
自己写 分页插件
自己写count插件
自己写 带参数打印的 SQL插件
很怀念那个时候 生撸啊
不过现在有了这个mybatis-plus
真的很不错
也证明了一句话
大家都需要自己写的东西 你把他整理下 就是个框架了 !
开个玩笑
如果大家对于这里比较感兴趣的话
可以去B站查看我的视频讲解
https://space.bilibili.com/193580090/#/
或者是在 github下载源码
https://github.com/ibywind/springboot-learn