這里寫目錄標題
- 添加MyBatis框架?持
- 配置連接字符串和MyBatis
- 配置連接字符串
- 配置 MyBatis 中的 XML 路徑
- 添加業務代碼
- 創建數據庫和表
- 添加用戶實體類
- 添加 mapper 接?
- 添加 UserMapper.xml
- 添加 Service層
- 添加 Controller層
- 增刪改操作
- 增加操作
- 刪除操作
- 修改操作
添加MyBatis框架?持
創建?個全新的 MyBatis 和 Spring Boot 的項?時添加引?
如下:
配置連接字符串和MyBatis
配置連接字符串
在application.properties中添加如下內容:
spring.datasource.url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=666666
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
配置 MyBatis 中的 XML 路徑
依舊在application.properties中添加如下內容:
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
# 配置mybatis xml 的?件路徑,在 resources/mapper 創建所有表的 xml ?件
添加業務代碼
按照后端開發思路,進行mybatis查詢用戶的功能,流程圖如下:
創建數據庫和表
創建demo數據庫
drop database if exists demo;
create database demo default character set utf8mb4;
使用數據庫
use demo;
創建學生表
drop table if exists stu;
create table stu(id int primary key auto_increment,name varchar(100) not null ,sex varchar(10) not null) default charset 'utf8mb4';
添加學生信息
insert into demo.stu(id,name,sex) values (1,'zcx','男');
添加用戶實體類
import lombok.Data;
@Data
public class User {private Integer id;private String name;private String sex;
}
添加 mapper 接?
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
public List<User> getAll();
}
添加 UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati
s.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisdemo.dao.UserMapper"></mapper>
- Mapper 標簽:需要指定 namespace 屬性,表示命名空間,需要寫的是 Mapper 接口的全限定名(包括包路徑)。namespace 的作用是指定該 Mapper XML 文件對應的 Mapper 接口,建立起二者之間的映射關系。
后續可在Mapper 標簽中書寫sql操作標簽
例如:
添加查詢操作
<select id="getAll">select * from stu</select>
添加 Service層
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserService {@Resourceprivate UserMapper userMapper;public List<User> getAll() {return userMapper.getAll();}}
添加 Controller層
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/u")
public class UserController {@Resourceprivate UserService userService;@RequestMapping("/getall")public List<User> getAll(){return userService.getAll();}
}
使用瀏覽器進行查詢訪問
增刪改操作
對?戶的增加、刪除和修改的操作,對應使? MyBatis 的標簽如下:
<insert>
標簽:插?語句<update>
標簽:修改語句<delete>
標簽:刪除語句
增加操作
controller 實現代碼:
@RequestMapping(value = "/add",method = RequestMethod.POST)public Integer add(@RequestBody User user){return userService.add(user);}
Service 實現代碼:
public Integer add(User user ){return userMapper.add(user);}
mapper interface:
Integer add(User user);
mapper.xml:
<insert id="add" >insert into stu(name,sex)values(#{name},#{sex})</insert>
使用Postman 添加訪問:
也可返回自增主鍵,修改如下代碼:
@RequestMapping(value = "/add",method = RequestMethod.POST)public Integer add(@RequestBody User user){userService.add(user);return user.getId();}
<insert id="add" useGeneratedKeys="true" keyProperty="id">insert into stu(name,sex)values(#{name},#{sex})</insert>
- useGeneratedKeys:這會令 MyBatis 使? JDBC 的 getGeneratedKeys ?法來取出由數據庫內部?成的主鍵,默認false
- keyProperty:指定能夠唯?識別對象的屬性,MyBatis 會使? getGeneratedKeys 的返回值或 insert 語句的 selectKey ?元素設置它的值
刪除操作
修改controller:
@RequestMapping(value = "/update",method = RequestMethod.POST)public Integer update( Integer id, String name) {return userService.update(id, name);}
mapper.xml:
<update id="update">update stu set name=#{name} where id=#{id}</update>
其他代碼修改跟增加操作相似
查看數據庫發現修改成功
修改操作
修改controller:
@RequestMapping("/delById")public Integer delById( Integer id){return userService.delById(id);}
mapper.xml:
<delete id="delById" parameterType="java.lang.Integer">delete from stu where id=#{id}</delete>
查看數據庫,刪除成功