一、快速使用
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、创建一个实体类(方便后面使用)
@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
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即可。
@Repository //创建bean实例并交由spring管理 public interface UserMapper { User getUser(String username); }
③对应mapper配置内容如下
主要是数据库字段名与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来进行自动注入