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呼叫