SpringBoot 中的 MyBatis
1.整合MyBatis
在Maven Repository下查询Mysql和MyBatis对应的SpringBoot版本。
在SpringBoot项目下的pom.xml
文件下添加依赖。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
2.设置MyBatis
在application.properties
文件中配置MyBatiste,具体配置项查看MyBatis官方文档。
#mysql
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/laravel_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybatis
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.mybatis.po
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.cache-enabled=false
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3.准备工作
在项目下创建com.example.mybatis.po
、com.example.mybatis.dao
、com.example.mybatis.controller
包(因为只是为了演示MyBatis功能,所以简化项目结果没有创建service
包),在resource目录下创建mapper
文件夹,项目目录如下:
3.1.数据库表结果
CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL PRIMARY KEY auto_increment,
`name` VARCHAR ( 12 ) NOT NULL,
`password` VARCHAR ( 80 ) NOT NULL,
`last_token` text,
`status` TINYINT NULL DEFAULT 0,
`created_at` TIMESTAMP NULL DEFAULT NULL,
`updated_at` TIMESTAMP NULL DEFAULT NULL
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
3.2.准备Po
package com.example.mybatis.po;
import java.io.Serializable;
import java.util.Date;
public class UserPo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String name;
private String password;
private String lastToken;
private Byte status;
private Long createdAt;
private Long updatedAt;
......
}
3.3.准备Dao
package com.example.mybatis.dao;
import com.example.mybatis.po.UserPo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface UserDao {
......
}
3.4.准备Mapper映射文件
<?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.example.mybatis.dao.UserDao">
......
</mapper>
3.5.准备Controller
package com.example.mybatis.controller;
import com.example.mybatis.dao.UserDao;
import com.example.mybatis.po.UserPo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserDao userDao;
......
}
4.使用MyBatiste
4.1.查询
在UserDao
文件中创建selectUserById
接口方法(注意方法名命名规则)。
UserPo selectUserById(@Param("id") Long id);
在resource
->mapper
->UserDao.xml
文件夹下,创建映射语句。
<select id="selectUserById" resultType="com.example.mybatis.po.UserPo">
SELECT
*
FROM USERS
WHERE id = #{id}
</select>
在UserController
文件中创建根据ID查询用户接口getUser
。
@GetMapping("")
public UserPo getUser(@RequestParam("id") Long id){
return userDao.selectUserById(id);
}
Postman调用
4.2.插入
在UserDao
文件中创建insertUser
接口方法(注意方法名命名规则)。
void insertUser(@Param("userPo") UserPo userPo);
在resource
->mapper
->UserDao.xml
文件夹下,创建映射语句。
<insert id="insertUser" parameterType="com.example.mybatis.po.UserPo">
INSERT INTO USERS (name, password, last_token, status, created_at, updated_at)
VALUES (#{userPo.name}, #{userPo.password}, #{userPo.lastToken}, #{userPo.status}, #{userPo.createdAt}, #{userPo.updatedAt})
</insert>
在UserController
文件中创建根据ID查询用户接口addUser
。
@PostMapping("/add")
public String addUser(
@RequestParam("name") String name,
@RequestParam("password") String password){
Long crtTime = System.currentTimeMillis();
UserPo userPo = new UserPo();
userPo.setName(name);
userPo.setPassword(password);
userPo.setCreatedAt(crtTime);
userPo.setUpdatedAt(crtTime);
userDao.insertUser(userPo);
return "插入成功";
}
Postman调用
4.3.更新
在UserDao
文件中创建updateUser
接口方法(注意方法名命名规则)。
void insertUser(@Param("userPo") UserPo userPo);
在resource
->mapper
->UserDao.xml
文件夹下,创建映射语句。
<insert id="insertUser" parameterType="com.example.mybatis.po.UserPo">
INSERT INTO USERS (name, password, last_token, status, created_at, updated_at)
VALUES (#{userPo.name}, #{userPo.password}, #{userPo.lastToken}, #{userPo.status}, #{userPo.createdAt}, #{userPo.updatedAt})
</insert>
在UserController
文件中创建根据ID查询用户接口updateUser
。
@PostMapping("/add")
public String addUser(
@RequestParam("name") String name,
@RequestParam("password") String password){
Long crtTime = System.currentTimeMillis();
UserPo userPo = new UserPo();
userPo.setName(name);
userPo.setPassword(password);
userPo.setCreatedAt(crtTime);
userPo.setUpdatedAt(crtTime);
userDao.insertUser(userPo);
return "插入成功";
}
Postman调用
4.4.删除
在UserDao
文件中创建deleteUser
接口方法(注意方法名命名规则)。
void deleteUser(@Param("id") Long id);
在resource
->mapper
->UserDao.xml
文件夹下,创建映射语句。
<delete id="deleteUser">
DELETE FROM USERS WHERE id = #{id}
</delete>
在UserController
文件中创建根据ID查询用户接口deleteUser
。
@PostMapping("/delete")
public String deleteUser(@RequestParam("id") Long id){
UserPo userPo = userDao.selectUserById(id);
if(userPo == null){
return "该用户不存在";
}
userDao.deleteUser(id);
return "删除成功";
}
Postman调用
本作品采用《CC 协议》,转载必须注明作者和本文链接
mapper 使用xml文件和java类的区别是什么?我刚接触这个。。别人视频是写的java类来实现mapper的
再添加一个Service层就好了
dao 层每个 mapper 可以不加 @Mapper 注解,直接在启动器类里面加 @MapperScan("mapper所在包")
刚接触,挺有用~