springboot集成mybatis-plus

springboot集成mybatis-plus

概念

为简化开发而生
在mybatis的基础上只做增强

一、添加依赖

mybatis-plus依赖
		<!--mybatis-plus-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>starter-latest-version</version>
		</dependency>
添加mysql-connector 和datasource 依赖
		<!--mysql connector-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!--data source-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.25</version>
		</dependency>

二、配置数据库信息

  • 在 application.yml 添加数据库配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    # mysql-connector-java 6 以前使用com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
    username: test
    password: test

三、配置mapper接口扫描

  • 在启动类上添加 @MapperScan
    扫描mapper

四、编写相应代码开始开发

数据库对应bean
  • 数据库表test
CREATE TABLE `test` (
  `id` int(6) NOT NULL DEFAULT '0',
  `name` varchar(50) DEFAULT NULL,
  `age` int(6) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
  • 实体类
import lombok.Data;

/**
 * @author liouwb
 */
@Data
public class Test {
    private int id;
    private String name;
    private Integer age;
}
编写dao层mapper接口
package com.liouxb.web.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liouxb.web.demo.domain.Test;


/**
 * @author liouwb
 */
public interface TestMapper extends BaseMapper<Test> {
}

五、测试验证代码

验证测试结果

mybatis-plus generator

(1)、添加依赖
  • MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要添加相关依赖
        <!--mybatis-plus-generator-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--模板依赖-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>
(2)、添加generator配置
  • 在Application.java(启动类)同目录下,添加generator类
    在这里插入图片描述

  • generator类代码配置

package com.liouxb.web.demo;

import com.baomidou.mybatisplus.annotation.DbType;
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.NamingStrategy;

import java.util.ArrayList;
import java.util.List;

/**
 * mybatis plus逆向工程
 *
 * @author liouwb
 */
public class GenerationUtil {

    public static void main(String[] args) {
        // 对应数据库名
        String[] tabList = new String[]{"test"};
        String author = "liouwb";

        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setFileOverride(true);
        // 不需要ActiveRecord特性的请改为false
        gc.setActiveRecord(true);
        // XML 二级缓存
        gc.setEnableCache(false);
        // XML ResultMap
        gc.setBaseResultMap(true);
        // XML columList
        gc.setBaseColumnList(true);

        gc.setAuthor(author);
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("test");
        dsc.setPassword("test");
        dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false");
        mpg.setDataSource(dsc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        // 表名生成策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 需要生成的表

        strategy.setInclude(tabList);
        mpg.setStrategy(strategy);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.liouxb.web");
        pc.setController("controller");
        pc.setEntity("domain");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setMapper("mapper");
        pc.setXml("mapperXml");
        mpg.setPackageInfo(pc);

        // mapper xml文件配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
            }
        };
        // 关闭默认 xml 生成,调整生成 至 根目录
        List<FileOutConfig> focList = new ArrayList<>();
        focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return projectPath + "/src/main/resources/mapper/" + tableInfo.getMapperName() + ".xml";
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        mpg.setTemplate(new TemplateConfig().setXml(null));

        // 执行生成
        mpg.execute();
    }
}
(3)、反向生成代码
  • 运行generator自动生成代码
    在这里插入图片描述
  • 自动生成代码效果
    在这里插入图片描述

mybatis-plus分页

  • 添加配置
package com.liouxb.web.demo.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * @author liouwb
 */
@Configuration
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        PaginationInterceptor page = new PaginationInterceptor();
        //设置方言类型
        page.setDialectType("mysql");
        return page;
    }
}
  • mapper接口
package com.liouxb.web.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.liouxb.web.demo.domain.Test;


/**
 * @author liouwb
 */
public interface TestMapper extends BaseMapper<Test> {
    IPage<Test> selectTests(Page<?> page);
}
  • mapper.xml文件
    <select id="selectTests" resultType="com.liouxb.web.demo.domain.Test">
    SELECT id,name FROM test
    </select>
  • 分页效果
    在这里插入图片描述

idea mybatisx插件

  • 安装mybatisx插件
    在这里插入图片描述
  • 连接数据源之后 xml 里自动提示字段
  • Java 与 XML 调回跳转
  • Mapper 方法自动生成 XML
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值