Spring Boot 整合Mybatis Plus (Spring 2.1+. MP 2.3+)

本文介绍如何在SpringBoot项目中集成MyBatisPlus,实现数据库操作自动化,包括配置依赖、代码生成器使用及控制器示例。

首先导入我们的Spring boot的起步依赖~

<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bdqn</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>springboot</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
        <!--首先导入Mybatis Plus的起步依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.3.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>
  • 这里要注意一下 我导入的是Mysql 8.0以上的驱动版本
  • 数据库驱动 : com.mysql.cj.jdbc.Driver 不是之前的 com.mysql.jdbc.Driver
  • url: jdbc:mysql:///smbms?serverTimezone=GMT%2B8&characterEncoding=utf8(如果不添加,启动会报错)
spring.datasource.username=root
spring.datasource.password=ok
spring.datasource.url=jdbc:mysql:///smbms?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

使用mybatis plus 代码生成器 不会的小伙伴可以去参考MP官网的官方文档(我使用的是MP默认的模板 velocity 也可以选择 FreeMark 任选其一)

package com.bdqn.springboot.utils;

import com.baomidou.mybatisplus.enums.IdType;
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;


/**
 * @author qhstart
 * @DATE 2018-12 14:11
 */
public class GeneratorMp {
    public static void main(String[] args) {
       String dir = System.getProperty("user.dir")+"\\src\\main\\java";
        GlobalConfig globalConfig = new GlobalConfig();
        //设置是否覆盖上一次的文件
        globalConfig.setFileOverride(true);
        //设置是否支持AR模式
        globalConfig.setActiveRecord(true);
        //设置生成位置
        globalConfig.setOutputDir(dir);
        //设置生成作者
        globalConfig.setAuthor("qinhan");
        //设置主键生成策略
        globalConfig.setIdType(IdType.AUTO);
        globalConfig.setServiceName("%sService");
        //设置通用mapperxml
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);

        //数据源配置
        DataSourceConfig dsConfig = new DataSourceConfig();
        dsConfig.setDbType(DbType.MYSQL).setDriverName("com.mysql.cj.jdbc.Driver").setUrl("jdbc:mysql:///smbms?serverTimezone=GMT%2B8&characterEncoding=utf8")
                .setUsername("root").setPassword("ok");

        //设置生成配置策略
        StrategyConfig stConfig = new StrategyConfig();
        //设置生成下划线
        stConfig.setDbColumnUnderline(true);
        stConfig.setNaming(NamingStrategy.underline_to_camel);
        stConfig.setCapitalMode(true);
        stConfig.setTablePrefix("smbms_");
        stConfig.setInclude("smbms_address","smbms_bill","smbms_provider","smbms_role","smbms_user");

        PackageConfig pg =new PackageConfig();
        pg.setParent("cn.bdqn.smbms");
        pg.setMapper("mapper").setEntity("pojo").setController("controller").
                setService("service").setXml("mapperConfig").setServiceImpl("service.impl").setModuleName("module");

        AutoGenerator ag = new AutoGenerator();
        ag.setPackageInfo(pg);
        ag.setDataSource(dsConfig);
        ag.setGlobalConfig(globalConfig);
        ag.setStrategy(stConfig);
        ag.execute();

    }
}

生成的实体

package com.bdqn.springboot.pojo;

import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;

/**
 * <p>
 * 
 * </p>
 *
 * @author qinhan
 * @since 2018-12-09
 */
@TableName("smbms_address")
public class Address extends Model<Address> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 联系人姓名
     */
    private String contact;
    /**
     * 收货地址明细
     */
    @TableField("addressDesc")
    private String addressDesc;
    /**
     * 邮编
     */
    @TableField("postCode")
    private String postCode;
    /**
     * 联系人电话
     */
    private String tel;
    /**
     * 创建者
     */
    @TableField("createdBy")
    private Long createdBy;
    /**
     * 创建时间
     */
    @TableField("creationDate")
    private Date creationDate;
    /**
     * 修改者
     */
    @TableField("modifyBy")
    private Long modifyBy;
    /**
     * 修改时间
     */
    @TableField("modifyDate")
    private Date modifyDate;
    /**
     * 用户ID
     */
    @TableField("userId")
    private Long userId;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getAddressDesc() {
        return addressDesc;
    }

    public void setAddressDesc(String addressDesc) {
        this.addressDesc = addressDesc;
    }

    public String getPostCode() {
        return postCode;
    }

    public void setPostCode(String postCode) {
        this.postCode = postCode;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public Long getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(Long createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreationDate() {
        return creationDate;
    }

    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }

    public Long getModifyBy() {
        return modifyBy;
    }

    public void setModifyBy(Long modifyBy) {
        this.modifyBy = modifyBy;
    }

    public Date getModifyDate() {
        return modifyDate;
    }

    public void setModifyDate(Date modifyDate) {
        this.modifyDate = modifyDate;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    @Override
    public String toString() {
        return "Address{" +
        "id=" + id +
        ", contact=" + contact +
        ", addressDesc=" + addressDesc +
        ", postCode=" + postCode +
        ", tel=" + tel +
        ", createdBy=" + createdBy +
        ", creationDate=" + creationDate +
        ", modifyBy=" + modifyBy +
        ", modifyDate=" + modifyDate +
        ", userId=" + userId +
        "}";
    }
}



mapper

package com.bdqn.springboot.mapper;

import com.bdqn.springboot.pojo.Address;
import com.baomidou.mybatisplus.mapper.BaseMapper;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author qinhan
 * @since 2018-12-09
 */
public interface AddressMapper extends BaseMapper<Address> {

}

controller

package com.bdqn.springboot.controller;


import com.bdqn.springboot.pojo.Address;
import com.bdqn.springboot.service.AddressService;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author qinhan
 * @since 2018-12-09
 */
@Controller
public class AddressController {
    @Autowired
    private AddressService addressService;
    @RequestMapping("/a")
    public String test(Model model){
    		//现在就可以使用MP为我们提供的强大功能啦~
        var addresses = addressService.selectList(null);
        System.out.println(addresses);
        model.addAttribute("msg",addresses);
        return "index";
    }
}

下面在模板引擎下创建一个页面就可以访问啦~~

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div th:text="${msg}">
</div>
</body>
</html>

记住要引用xmlns:th="http://www.thymeleaf.org  不然的话会没提示的~~

成功查出数据并显示在页面~~

到这里就大公完成啦~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值