springboot整合mybatis框架,超详细

第一种:mapper接口纯注解

(mapper层即为dao层)

第一步:application.yml文件配置DataSource,注解开发可以不用配置mybatis。(以User.java为例)

 springboot整合mybatis框架,超详细_第1张图片

​
#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包下)

springboot整合mybatis框架,超详细_第2张图片

#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

springboot整合mybatis框架,超详细_第3张图片

springboot整合mybatis框架,超详细_第4张图片

注意一下注解:@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
    }
}

​

第四步:测试,控制台成功打印所需信息。

第二种:Xml配置

第一步:创建UserXmlMapper接口

springboot整合mybatis框架,超详细_第5张图片

#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的约束头。

springboot整合mybatis框架,超详细_第6张图片

#xml文件原始内容,不完整,对mapper作约束

然后根据所需操作添加配置。 内容  

springboot整合mybatis框架,超详细_第7张图片可见是有各种操作的

​
​
#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);
    }
}

​

你可能感兴趣的:(java学习笔记,spring,boot,java,后端)