目前在java应用中主流的持久化框架有
Mybatis
(国内较流行)Hibernate
(国外较流行)SpringDataJPA
(近几年流行起来的)
ORM
:对象关系映射(Object Relational Mapping),用来描述对象和数据库之间的映射关系。
持久化
:将对象的数据存储到数据库中。
简而言之,ORM持久化框架做的事情就是建立对象和数据库之间的映射关系,并把对象的数据存储到数据库
在springboot中整合Mybatis和三层架构需要以下几步:
1、pom文件引入 mybatis 依赖和 mysql 驱动
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<!-- mysql数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2、在 yaml 配置文件中配置数据源和要扫描加载的 mappper 映射文件
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/spring-boot-example?useUnicode=true&characterEncoding=utf8
username: xxx
password: xxxxxx
hikari:
#最小空闲连接数
minimum-idle: 10
#连接池最大连接数
maximum-pool-size: 30
mybatis:
#mybatis扫描mapper文件的位置
mapper-locations: classpath:mapper/*Mapper.xml
3、创建用于持久化的对象
public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
4、创建controller层、service层、dao层
1)controller层
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("queryById")
public User queryById(Integer id) {
return userService.queryById(id);
}
@RequestMapping("save")
public int save(User user) {
return userService.insert(user);
}
}
2)service层
@Service
@Transactional
public class UserService {
@Autowired
private UserDao userDao;
public User queryById(Integer id) {
return userDao.queryById(id);
}
public int insert(User user) {
return userDao.insert(user);
}
}
3)dao层
public interface UserDao {
User queryById(Integer id);
int insert(User user);
}
5、编写 mapper.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.bin.dao.UserDao">
<select id="queryById" resultType="com.bin.entity.User">
select * from user where id = #{id}
</select>
<insert id="insert" parameterType="com.bin.entity.User">
insert into user(name, age) values (#{name}, #{age})
</insert>
</mapper>
6、在启动类上加上配置 dao 层接口的扫描
@SpringBootApplication
@MapperScan("com.bin.dao") // Mapper类的扫描路径
public class SpringbootFastApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootFastApplication.class, args);
}
}
搭建完成,整体的项目结构如下:
最后用 postman 测试一下接口:
保存接口返回了1,说明成功保存了一条数据
查询接口返回了刚刚保存的数据,完全没毛病,老铁,成了!