spring boot整合mybatis-plus

先导入相关依赖包,我这用的是mysql数据库做测试

<?xml version="1.0" encoding="UTF-8"?>
<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 https://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.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot</name>
    <description>Demo project for Spring Boot</description>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

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

</project>

创建数据库和编写对应实体,以及在配置文件上配置数据库属性

如下是一个名为local的数据库和USER_INFO的表,里面有5条数据
在这里插入图片描述
UserInfo实体信息:

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName(value = "USER_INFO")
public class UserInfo {

    @TableId(value = "ID",type =IdType.UUID)
    private String id;
    @TableField(value = "USER_NAME")
    private String userName;
    @TableField(value = "AGE")
    private int age;


    public String getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

@TableName:表示这个实体对应哪个表
@TableId:表示主键id,type的值代表主键类型
@TableField:表示实体字段对应的数据库字段

application.yml文件信息:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/local
    username: ***
    password: ***

编写dao层,编写dao层对应的xml文件,以及方法对应的sql,同时在启动类上加上@MapperScan注解,把dao层类扫描注入ioc容器

UserInfoDao继承BaseMapper接口,这个接口是由mybatis-plus提供的,里面包含了一些基础增删查改操作,可以提高我们开发效率,这里只写一个方法做测试

UserInfoDao.java:

@Repository
public interface UserInfoDao extends BaseMapper<UserInfo> {
    //
    UserInfo queryUserInfoById(@Param("id") String id);
}

UserInfoMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.springboot.mapper.UserInfoDao">
    <select id="queryUserInfoById" resultType="com.example.springboot.domain.UserInfo">
            select * from USER_INFO where id=#{id}
    </select>

</mapper>

UserInfoDao.java类和UserInfoMapper.xml文件通过全限定名(namespace+id)互相确认和找到对方。

启动类:

@SpringBootApplication
@MapperScan("com.example.springboot.mapper")//这个注解很关键,加上@Repository注解,就能够把该路径下的所有用@Repository标记的类都注入ioc容器
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

编写测试service和controller做测试:

UserInfoService类,这里有两个方法,queryUserInfoById()是自己写的sql,而selectById()是由mybatis-plus为我们提供的接口,这里测试下两者的效果:

import com.example.springboot.domain.UserInfo;
import com.example.springboot.mapper.UserInfoDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserInfoService {
    @Autowired
    private UserInfoDao userInfoDao;


    public UserInfo queryUserInfoById(String id) {
        return userInfoDao.queryUserInfoById(id);
    }


    public UserInfo selectById(String id) {
        return userInfoDao.selectById(id);
    }
}

HelloController类:

@RestController
public class HelloController {

    @Autowired
    private UserInfoService userInfoService;


    @GetMapping("/queryUserInfoById/{id}")
    public UserInfo queryUserInfoById(@PathVariable("id") String id) {
        return userInfoService.queryUserInfoById(id);
    }

    @GetMapping("/selectById/{id}")
    public UserInfo selectById(@PathVariable("id") String id) {
        return userInfoService.selectById(id);
    }
}

访问http://localhost:8080/queryUserInfoById/1,结果如下:
在这里插入图片描述
访问http://localhost:8080/selectById/1,结果如下:
在这里插入图片描述

可以看到二者结果是一样的

总结下spring boot整合mybatis-plus的步骤:

  • 导入相关依赖
  • 编写数据库相对应的实体,加上相关注解,同时在配置文件上配置数据库属性
  • 编写相关的dao层和xml文件,同时在启动类上添加@MapperScan对dao类进行扫描
  • 测试下效果,如果只是测试,方法很多,不一定要多编写service类和controller类
发布了136 篇原创文章 · 获赞 109 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/103773771