一、常见的持久层框架
- Mybatis (半自动,就是需要自己手动写sql)
- hibernate(全自动,不需要自己手动写sql)
二、数据库准备
- 每个数据库配置单独的用户,专库专用
- IDEA配置数据库连接
- 增加数据库脚本
drop table if exists test;
CREATE TABLE `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL COMMENT '用户名',
`password` varchar(50) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='测试';
三、集成Mybatis
1、引入依赖
<!-- 集成mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
2、配置数据源
application.yml
# 增加数据库连接
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/wiki?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: wiki
password: wiki
添加数据源映射
resources
下创建一个名为mapper的文件夹,并创建mapper文件
TestMapper.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.rongrong.wiki.mapper.TestMapper" >
<select id="list" resultType="com.rongrong.wiki.domain.Test">
select `id`, `name`, `password` from `test`
</select>
</mapper>
3、使用Mybatis
配置mybatis
所有Mapper.xml
所在的路径
# 配置mybatis所有Mapper.xml所在的路径
mybatis:
mapper-locations: classpath:/mapper/**/*.xml
4、创建映射实体及实现映射
创建一个名为com.rongrong.wiki.domain的包,并创建一个名为Test的实体类,具体代码如下:
package com.rongrong.wiki.domain;
import lombok.Data;
/**
* @author rongrong
* @version 1.0
* @description
* @date 2021/10/7 18:22
*/
@Data
public class Test {
private Integer id;
private String name;
private String password;
}
创建一个接口TestMapper,示例代码如下:
package com.rongrong.wiki.mapper;
import com.rongrong.wiki.domain.Test;
import java.util.List;
/**
* @author rongrong
* @version 1.0
* @description
* @date 2021/10/7 19:13
*/
public interface TestMapper {
public List<Test> list();
}
创建一个Service,主要用于写逻辑,示例代码如下:
package com.rongrong.wiki.service;
import com.rongrong.wiki.domain.Test;
import com.rongrong.wiki.mapper.TestMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author rongrong
* @version 1.0
* @description
* @date 2021/10/7 21:09
*/
@Service
public class TestService {
@Resource
private TestMapper testMapper;
public List<Test> list() {
return testMapper.list();
}
}
5、编写查询接口
示例代码如下:
@GetMapping("/test/list")
public List<Test> list() {
return testService.list();
}
6、使用@MapperScan扫描所有的Mapper接口
在启动类处添加注解
四、测试
访问接口返回如下:
五、接口和XML的命名
- 使用
@Service
或@RestController
注解,将Service类或Controller类交给Spring来管理了 - 使用
@Resource
或@Autowire
(使用会报错,提示没有bean,我用的是jdk自带的前者)将一个类注入到另一个类中