SpringBoot整合Mybatis

文章目录

前言

本篇博客是SpringBoot整合Mybatis,若文章中出现相关问题,请指出!

所有博客文件目录索引:博客目录索引(持续更新)

一、快速使用

1.1、导入坐标mybatis启动器

第一个是mybatis的springboot启动器,第二个是lombok插件主要用来简化pojo方法

<!--   mybatis   -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>
<!--    lombok插件    -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>compile</scope>
</dependency>


1.2、创建一个实体类(方便后面使用)

image-20210415012819939

image-20210415012117089

@Data
public class User {
    private BigInteger id;
    private BigInteger roleId;
    private String username;
    private String password;
    private String salt;
    private String email;
    private String phoneNum;
    private BigDecimal accountMoney;

}


1.3、application.yml配置数据源等

数据源不陌生吧,分别为用户名、jdbc连接mysql数据源地址、密码、驱动类。

下面的是对应的实体类包路径设置以及对应的mapper映射位置。

# 配置mybatis数据源
spring:
  datasource:
    username: root
    url: jdbc:mysql://localhost:3306/dj.smartparking.rdb?setTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

# 整合mybatis,实体类包配置和mapper映射地址
mybatis:
  type-aliases-package: com.changlu.pojo
  mapper-locations: classpath:mybatis/mapper/*.xml

image-20210415011646302

  • mapper-locations对应路径为resources目录下。


1.4、DAO与Mapper配置

①在springboot启动类上使用注解@MapperScan,后面跟上对应的mapper包路径,表示自动扫描该包下的dao

@MapperScan("com.jssvc.smartparking.mapper")  //扫描mapper包下的dao接口
@SpringBootApplication
public class SmartparkingWebApplication {

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

}
  • 使用@Repository在dao上,需要在启动类上添加@MapperScan,如上。

②接着到该mapper目录中创建dao即可。

image-20210415012021925

@Repository  //创建bean实例并交由spring管理
public interface UserMapper {

    User getUser(String username);

}

③对应mapper配置内容如下

image-20210415012406359

主要是数据库字段名与pojo实体类中的字段名不相同,所以使用了resultMap来进行别名设置

<?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">

<!-- 设置指定的namespace -->
<mapper namespace="com.jssvc.smartparking.mapper.UserMapper">

    <!-- 定义一个结果集,保证pojo中的字段与数据库相符   -->
    <resultMap id="userResultMap"  type="com.jssvc.smartparking.pojo.User">
        <!-- 用id属性来映射主键字段 -->
        <id property="id" column="id"/>
        <result property="roleId" column="role_id"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <result property="salt" column="salt"/>
        <result property="email" column="email"/>
        <result property="phoneNum" column="phonenum"/>
        <result property="accountMoney" column="accountmoney"/>
    </resultMap>

    <!--  根据username获取User对象  -->
    <select id="getUser" resultMap="userResultMap" parameterType="String">
        select * from user where username = #{username}
    </select>

</mapper>

到了这步dao与mapper映射文件都配置完毕了,如何在service类中使用呢?通过使用一个@Autowired来进行自动注入

image-20210415012555006



参考文章

[1]. @Repository 与 @Mapper的区别



整理者:长路 创建时间:2021.4.5 1:29

评论区请在客户端页面查看