¿Qué es Mybatis?
Mybatis es un excelente marco de capa de persistencia basado en Java que encapsula jdbc en su interior, de modo que los desarrolladores solo necesitan prestar atención a la declaración SQL en sí, sin gastar energía en cargar controladores, crear conexiones, crear declaraciones y otros procesos complicados.
SpringBoot integra Mybatis
Cree un proyecto SpringBoot e introduzca dependencias de 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>
Cree una carpeta de mapeador en el directorio de recursos
Crear bases de datos y tablas de datos y las clases de entidad correspondientes.
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;
}
Mejorar el archivo de configuración 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
Cree un nuevo archivo UserMapper.xml
Implementar operaciones básicas de adición, eliminación, modificación y consulta en el archivo del mapeador.
Nota : No agregue un punto y coma al final de la declaración SQL en dichos archivos; de lo contrario, mybatis puede cometer errores al unir declaraciones 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, el nombre del método debe ser el mismo que en 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 interfaz
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();
}
Definir la clase de implementación de la interfaz.
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();
}
}
Estructura de directorios
prueba
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);
}
}
La prueba es exitosa y los datos se han mostrado en la base de datos.