SpringBoot Mybatis-Plus 学习记录

SpringBoot Mybatis-Plus 学习记录

SpringBoot有多火,是有目共睹的,约定优于配置。不用写那么多配置,确实是爽多了。
Mybatis,半自动ORM框架,可以方便的自定义sql语句。但是要写的sql语句其实也挺多了(虽然有通用mapper),Mybatis-plus就为此诞生了,在Mybatis基础上加强并进一步封装有用的功能。
Mybatis-Plus文档

SpringBoot 加上 Mybatis-Plus ,双份的快乐……
官方的快速开始demo是h2数据库,还是比较复杂的。这里就写个简单的Demo

创建项目

创建一个SpringBoot项目,这里就不累赘了,放一下关键的依赖


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <groupId>com.examplegroupId>
    <artifactId>pmtestartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>jarpackaging>

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>1.5.13.RELEASEversion>
    parent>
    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <java.version>1.8java.version>
    properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <scope>runtimescope>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>2.2.0version>
        dependency>
    dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>

添加配置

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/pm?useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 1234

mybatis-plus:
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 0

这样就可以了,应该是最简单的配置了

代码生成器

Mybatis-plus 提供了强大的代码生成器,可以快速生成各类代码,配置也不算复杂。
这里演示一下。

数据表

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(50) NOT NULL COMMENT '用户名称',
  `age` int(2) NOT NULL COMMENT '用户年龄',
  PRIMARY KEY (`id`)
)

很简单的一张表…方便演示。

配置代码生成器

引入依赖


<dependency>
    <groupId>org.apache.velocitygroupId>
    <artifactId>velocity-engine-coreartifactId>
    <version>2.0version>
dependency>


<dependency>
    <groupId>org.freemarkergroupId>
    <artifactId>freemarkerartifactId>
    <version>2.3.23version>
dependency>

具体Java代码
可以在/src/main/resources中加入Mybatis-Plus.properties配置文件
不过我觉得代码配置也不麻烦

public class MpGenerator {
    public static void main(String[] args) {
        GlobalConfig config = new GlobalConfig();
        String dbUrl = "jdbc:mysql://localhost:3306/pm?useSSL=false";
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(dbUrl)
                .setUsername("root")
                .setPassword("1234")
                .setDriverName("com.mysql.jdbc.Driver");
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                .setCapitalMode(true)
                .setEntityLombokModel(false)
                .setDbColumnUnderline(true)
                .setNaming(NamingStrategy.underline_to_camel);
        config.setActiveRecord(false)
                .setEnableCache(false)
                .setAuthor("admin")
                // 这里就直接输出到项目里面,不用再复制进来
                .setOutputDir("pmtest\\src\\main\\java")
                .setFileOverride(true)
                .setServiceName("%sService");
        new AutoGenerator().setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(
                        new PackageConfig()
                                .setParent("com.example.pmtest")
                                .setController("controller")
                                .setEntity("entity")
                ).execute();
    }
 }

生成结果
SpringBoot Mybatis-Plus 学习记录_第1张图片

具体的配置 代码生成器

使用注解的话,不要忘记加上 @MapperScan 注解

完整的web请求

MyBatis-Plus已经把常用的CRUD封装好了的,这里可以直接用刚刚生成的代码。
完善一下 UserController类

@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private MPUserService userService;

    @GetMapping("save/name={name}&age={age}")
    public String save(@PathVariable String name, @PathVariable int age) {
        User user = new User();
        user.setName(name);
        user.setAge(age);
        userService.insert(user);
        return "succ";
    }

    @GetMapping("get/name={name}")
    public User get(@PathVariable String name) {
        // sql 条件构造器
        EntityWrapper ew = new EntityWrapper<>();
        ew.eq("name", name);
        User user = userService.selectOne(ew);
        return user;
    }
}

顺利运行,直接用新版idea自带的HTTP Client测试一下
SpringBoot Mybatis-Plus 学习记录_第2张图片

SpringBoot Mybatis-Plus 学习记录_第3张图片

熟练的话,感觉不比jpa慢,而且简单很多。
可以看到我用了个EntityWrapper 类 , 这是封装好的sql条件构造器,可以很方便的自定义sql语句。
具体详细用法看文档,也是很方便又强大的。 条件构造器

总结

这里就基本完成demo了。
Mybatis 虽然没有Hibernate 和 jpa 那样的商业支持,发展速度比较慢。jpa的NamedNativeQueries的出现,也可以直接写sql 。性能也不再是瓶颈。Mybatis的优势几乎全无了。不过只要是单表操作,加上丰富的plugins,Mybatis 还是不错的选择。

你可能感兴趣的:(JAVA,SpringBoot)