本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
WangScaler: 一个用心创作的作者。
声明:才疏学浅,如有错误,恳请指正。
我们java大家最熟悉的框架莫属spring全家桶,对数据库的操作,往往使用Mybatis。但是很多时候需要的sql语句并不复杂,就是简单的增删改查而已,如果我们也都自己动手写,就有些浪费时间,今天就推荐给大家一个在Mybatis基础上改造的工具Mybatis-plus。
Mybatis-plus没有改变Mybatis,只是在Mybatis的基础上进行了增强,其实就是封装好了一些crud方法,供我们直接调用。接下来一起看看吧。
引入依赖
首先项目如果使用的是Maven的话可以直接引入依赖mybatis-plus-boot-starter
,当然使用这个依赖还必须引入项目其他所必须的依赖,这里以mysql为例。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>Latest Version</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
复制代码
引入依赖之后,简单的配置下mysql相关的配置,就可以使用了。
配置
在 application.yml
配置上mysql相关的配置。
spring:
datasource:
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/wangscaler?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
复制代码
这里仅仅是例举了一些基础的配置,推荐搭建可以集成druid,这个插件也是相当强大。
继承Mybatis-plus的类
继承BaseMapper之后,就可以使用父类的一些方法了。如果你对象的文件名User和数据库的表名不一致,也可以在对象User上通过注解@TableName来指定相应的数据库表名。
public interface UserMapper extends BaseMapper<User> {
}
复制代码
使用
直接调用父类的方法selectList,就等同于sql语句SELECT * FROM user;
,我们无需在mapper.xml中书写sql语句,只需要一句话就实现了我们想要的结果,是不是大大节省了我们的时间。
@SpringBootTest
public class SampleTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
}
复制代码
代码生成器
我们新的业务出现的时候,可能需要我们创建新的包名,以及controller、bean、,mapper、service下都得重复的创建新的文件,而文件的代码基础机构是大同小异的,我们可以直接使用Mybatis-plus自动生成这些代码。
引入依赖
在上述依赖的基础上添加新依赖。
// 注意!!当前包未传递依赖 mp 包,需要自己引入
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>Latest Version</version>
</dependency>
复制代码
代码
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
// 全局配置
.globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")).fileOverride())
// 包配置
.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?")))
// 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
.controllerBuilder().enableRestStyle().enableHyphenStyle()
.entityBuilder().enableLombok().addTableFills(
new Column("create_time", FieldFill.INSERT)
).build())
/*
模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
.templateEngine(new BeetlTemplateEngine())
.templateEngine(new FreemarkerTemplateEngine())
*/
.execute();
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
复制代码
可以通过运行这段代码,将会根据你数据库的数据表之间的关系,自动生成基础代码,是不是很方便,快捷。
总结
这个插件是国内的大佬开发的,集成到项目中,确实会大大减轻我们的工作量,推荐大家使用。还是那句话,好不好试试才有发言权。当然集成之后,你不习惯使用他的功能,你依然可以通过它使用Mybatis的所有功能。这款插件只是提供简单的sql语句的方法,复杂的当然还是需要你自己手写sql语句。
来都来了,点个赞再走呗!
关注WangScaler,祝你升职、加薪、不提桶!