这里写目录标题
- 添加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>
查看数据库,删除成功