(mapper层即为dao层)
第一步:application.yml文件配置DataSource,注解开发可以不用配置mybatis。(以User.java为例)
#application.yml文件内容如下
# datasource
spring:
datasource:
url: jdbc:mysql:///springboot?serverTimezone=UTC #注意添加时区,标准时区为“UTC”
username: root
password: 20011205
driver-class-name: com.mysql.cj.jdbc.Driver
下面是url和driverclassname注解形式:
driverClassName: com.mysql.jdbc.Driver # mysql-connector-java 5.x及之前版本中的
driverClassName: com.mysql.cj.jdbc.Driver # mysql-connector-java 6.x及后续版本中的
参数名称 参数说明
user 数据库用户名(用于连接数据库)
password 用户密码(用于连接数据库)
useUnicode 是否使用Unicode字符集
characterEncoding 指定字符编码
autoReconnect 当数据库连接异常中断时,是否自动重新连接
autoReconnectForPools 是否使用针对数据库连接池的重连策略
failOverReadOnly 自动重连成功后,连接是否设置为只读
maxReconnects autoReconnect设置为true时,重试连接的次数
initialTimeout autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒
connectTimeout 和数据库服务器建立socket连接时的超时时间,单位:毫秒。 0表示永不超时,适用于JDK
socketTimeout socket操作(读写)超时时间,单位:毫秒。 0表示永不超时
useSSL 是否进行SSL连接
serverTimezone 数据库时区设置,mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空。
# Kaven是你需要连接的具体数据库名
url:jdbc:mysql://localhost:3306/Kaven
# 使用Unicode字符集,并且指定UTF-8字符编码
url:jdbc:mysql://localhost:3306/Kaven?useUnicode=true&characterEncoding=UTF-8
# 当数据库连接异常中断时,自动重新连接
url:jdbc:mysql://localhost:3306/Kaven?autoReconnect=true
# 不进行SSL连接
url:jdbc:mysql://localhost:3306/Kaven?useSSL=false
# 不进行SSL连接,并且设置数据库时区为亚洲上海
url:jdbc:mysql://localhost:3306/Kaven?useSSL=false&serverTimezone=Asia/Shanghai
第二步:创建UserMapper接口。mapper.UserMapper(mapper包下)
#mapper包下的UserMapper.java接口
package com.ithc.springbootmybatis.mapper;
import com.ithc.springbootmybatis.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("select * from t_user")
public List findAll();
}
第三步:在测试类中注入对应的mapper
注意一下注解:@RunWith 是类级别的注解, 它提供了一种更改测试运行程序的默认行为的机制。简单理解,@RunWith注解就是一个运行器,其接受一个类的签名来指定是使用什么类、在什么环境下运行。需要注意的是,该注解的参数必须是Runner类的子类。
@SpringBootTest注解是一个Spring Boot提供的注解,通过这个注解可以使JUnit单元测试跑在Spring Boot的运行环境中。我们可以通过classes参数来指定Spring Boot的启动类。
import...
@SpringBootTest
class SpringbootMybatisApplicationTests {
@Autowired
private UserMapper userMapper; #注入mapper
@Test
public void testFindAll() {
List list = userMapper.findAll(); #测试类操作,查找所有用户,存到list集合中
System.out.println(list); #打印list
}
}
第四步:测试,控制台成功打印所需信息。
第一步:创建UserXmlMapper接口
#UserXmlMapper接口文件内容
package com.ithc.springbootmybatis.mapper;
import com.ithc.springbootmybatis.domain.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserXmlMapper {
public List findAll();
}
(没有添加注解,所以需要配置文件和findAll方法进行映射)
第二步:配置文件,写在resources目录下,创建directory类型文件mapper,mapper下UserMapper.xml文件进行配置,内容是对mapper的约束头。
#xml文件原始内容,不完整,对mapper作约束
然后根据所需操作添加配置。
#UserMapper.xml最终内容,查询操作
#指定namespace让其和UserXmlMapper有映射关系,值为其全路径名。copy reference复制路径名
第三步:写好了UserMapper.xml配置文件后,需要在application.yml文件中配置mybatis
# mybatis
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml #mapper映射文件路径
type-aliases-package: com.ithc.springbootmybatis.domain #包扫描,因为前面的配置文件中使用了别名,所以需要把别名配置进去,值为User.java所在包的包名
#config-location: 指定mybatis的核心配置文件
第四步:配置完毕,在测试类中注入。注入完毕测试得到同样结果。
#在测试类中注入,内容格式与纯注解方法相同
@SpringBootTest
class SpringbootMybatisApplicationTests {
@Autowired
private UserXmlMapper userXmlMapper;
@Test
public void testFindAll2() {
List list = userXmlMapper.findAll();
System.out.println(list);
}
}