开发小技巧之Mybatis-Plus

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

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,祝你升职、加薪、不提桶!

猜你喜欢

转载自juejin.im/post/7016879540903346189