springBoot使用mabatis已经是非常常用的技巧了,但是对于小白来说还有许多值得记录的地方,这里做部分的总结,后续工作中有不懂的会及时的在这里进行更新。
- pom文件中导入依赖包
<!-- 引入mybatis包 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<!-- 数据库连接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
- 项目配置文件中进行mybatis的相关配置
这里选项用application.yml系统配置文件。
配置mybatis:
#集成mybatis环境
mybatis:
mapper-locations: classpath*:mybatis-mappers/*
type-aliases-package: com.yunmeng.friday.model
configuration:
map-underscore-to-camel-case: true
配置数据库连接池:
spring:
#配置数据库,名称为springbootdemodat
datasource:
name: springbootdemodat
type: com.alibaba.druid.pool.DruidDataSource
#druid相关的配置
druid:
filters: stat #监控统计的filters
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootdemodat?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
initial-size: 1 #配置初始化大小
min-idle: 1
max-active: 20
max-wait: 60000 #获取连接等待超时时间
time-between-eviction-runs-millis: 60000 #多久需要进行一次检测,检测需要关闭的空闲连接
min-evictable-idle-time-millis: 300000 #一个连接在池中的最小生存时间
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: false #打开PScache,并设置每个连接上PSCache的大小,oracle设置为true,mysql设置为false
max-pool-prepared-statement-per-connection-size: 20
- 编写UserDao接口,定义sql语句及方法
package com.yunmeng.friday.dao;
import com.yunmeng.friday.model.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserDao {
//查询用户
@Select("select * from sys_user t where t.username = #{username}")
SysUser getUser(String username);
//用户注册
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
@Select("INSERT INTO sys_user(username, password, nickname, phone, birthday, sex, status, createTime, updateTime) " +
"VALUES(#{username}, #{password}, #{nickname}, #{phone}, #{birthday}, #{sex}, #{status}, #{createTime}, #{updateTime})")
void insertUser(SysUser user);
//更新用户,采用xml样式
void updateUser(SysUser user);
//用户登录
@Select("select * from users where username=#{username} and PASSWORD=#{PASSWORD}")
boolean userLogin(SysUser user);
}
- 定义UserMapper.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.yunmeng.friday.dao.UserDao">
<update id="updateUser">
update sys_user t
<set>
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="nickname != null">nickname=#{nickname},</if>
<if test="phone != null">phone=#{phone},</if>
<if test="birthday != null">birthday=#{birthday},</if>
<if test="sex != null">sex=#{sex},</if>
<if test="status != null">status=#{status},</if>
<if test="updateTime != null">updateTime=#{updateTime}</if>
</set>
where username=#{username}
</update>
</mapper>
其中的前两行为固定写法,namespace字段表名此mapper文件指向的dao接口类,相关的语法参考可以参考中文文档:
idea编辑器可以设置mapper提示,方法如下:
需要在settings->Schemas DTDS添加配置external schemas and DTDS :
http://mybatis.org/dtd/mybatis-3-mapper.dtd
完成之后即可以编写测试类进行配置测试。