O que é Mybatis?
Mybatis é uma excelente estrutura de camada de persistência baseada em Java, que encapsula jdbc internamente, de modo que os desenvolvedores só precisam prestar atenção à instrução SQL em si, sem gastar energia carregando drivers, criando conexões, criando instruções e outros processos complicados.
SpringBoot integra Mybatis
Crie um projeto SpringBoot e introduza dependências maven
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Crie uma pasta mapeadora no diretório de recursos
Crie bancos de dados e tabelas de dados e classes de entidade correspondentes
package com.mybatis.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
// 引入lombok,省略getter和setter
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String email;
}
Melhore o arquivo de configuração application.yml
server.port:
8080
spring:
datasource:
username: root
password: 123456
## mysql8版本需要在以下url中配置时区,即serverTimezone
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
## 使用默认的Hikari数据源
type: com.zaxxer.hikari.HikariDataSource
mybatis:
## 映射的实体类所在位置
type-aliases-package: com.mybatis.entity
## mapper文件存放路径
mapperLocations: classpath:mapper/*.xml
Crie um novo arquivo UserMapper.xml
Implementar operações básicas de adição, exclusão, modificação e consulta no arquivo mapeador
Nota : Não adicione ponto e vírgula no final da instrução SQL em tais arquivos, caso contrário mybatis pode cometer erros ao unir instruções SQL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.UserMapper"> <!-- 命名空间为DAO文件存放位置-->
<!-- 添加用户-->
<insert id="addUser">
insert into t_user (id, username, email)
values (#{id}, #{username}, #{email})
</insert>
<!-- 删除用户-->
<delete id="delUser">
delete from t_user where id = #{id}
</delete>
<!-- 更新用户-->
<update id="updateUser">
update t_user
set username = #{username}, email = #{email}
where id = #{id}
</update>
<!-- 根据ID查找用户-->
<select id="findById">
select * from t_user where id = #{id}
</select>
<!-- 获取所有用户-->
<select id="findAllUsers">
select * from t_user
</select>
</mapper>
Defina DAO, o nome do método deve ser o mesmo do Mapper
package com.mybatis.mapper;
import com.mybatis.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
int addUser(User user);
int updateUser(User user);
int delUser(Integer id);
User findById(Integer id);
List<User> findAllUsers();
}
definir interface
package com.mybatis.service;
import com.mybatis.entity.User;
import java.util.List;
public interface UserService {
int addUser(User user);
int updateUser(User user);
int delUser(Integer id);
User findById(Integer id);
List<User> findAllUsers();
}
Defina a classe de implementação da interface
package com.mybatis.service.impl;
import com.mybatis.entity.User;
import com.mybatis.mapper.UserMapper;
import com.mybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public int addUser(User user) {
return userMapper.addUser(user);
}
@Override
public int updateUser(User user) {
return userMapper.updateUser(user);
}
@Override
public int delUser(Integer id) {
return userMapper.delUser(id);
}
@Override
public User findById(Integer id) {
return userMapper.findById(id);
}
@Override
public List<User> findAllUsers() {
return userMapper.findAllUsers();
}
}
Estrutura de diretório
teste
package com.mybatis;
import com.mybatis.entity.User;
import com.mybatis.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class MybatisApplicationTests {
@Autowired
private UserService userService;
@Test
void contextLoads() {
User user = new User(1, "小明", "[email protected]");
userService.addUser(user);
}
}
O teste foi bem-sucedido e os dados foram exibidos no banco de dados