添加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 { @Resource private 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 { @Resource private 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>
查看数据库,删除成功