前言
Spring已经集成了Mybatis,只需在创建项目时选择Mybatis即可
第一步,建立对应
UserMapper.java代码
package com.example.ssm_demo.mapper;
import com.example.ssm_demo.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserMapper {
public User selectUserByName(String name);
void insertUser(@Param("user") User user);
void insertUsers(@Param("users") List<User> users);
void deleteUser(@Param("id") Integer id);
void updateUser(@Param("user") User user);
User selectUserById(@Param("id") Integer id);
List<User> selectAllUsers();
}
UserMapper.xml代码
<?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.ssm_demo.mapper.UserMapper">
<resultMap id="baseResultMap" type="com.example.ssm_demo.entity.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="password" property="password"/>
</resultMap>
<insert id="insertUser">
insert into `user` (name, password) values (#{user.name}, #{user.password})
</insert>
<insert id="insertUsers">
insert into `user` (name, password) values
<foreach collection="users" item="u" close="" open="" separator=",">
(#{u.name}, #{u.password})
</foreach>
</insert>
<delete id="deleteUser">
delete from `user` where id = #{id}
</delete>
<update id="updateUser">
update `user` set name = #{user.name}, password = #{user.password} where id = #{user.id}
</update>
<select id="selectUserById" resultMap="baseResultMap">
select * from `user` where id = #{id}
</select>
<select id="selectAllUsers" resultMap="baseResultMap">
select * from `user`
</select>
</mapper>
第二步,配置路径
在application.yml中配置路径
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/ssmboot_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
mybatis:
mapper-locations: classpath:mapper/*.xml
第三步,在SsmDemoApplication中配置
确保程序能找到mapper文件
其中的 值右键复制包的路径
第四步,在UserMapper.java中按下alt+insert生成测试类
在第一行加入@SpringBootTest
在测试类中写入userMapper,但此时其实编译器会自动根据mapperScaner进行查找
package com.example.ssm_demo.mapper;
import com.example.ssm_demo.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class UserMapperTest {
@Autowired(required = false)
UserMapper userMapper;
@Test
void selectUserByName() {
}
@Test
void insertUser() {
userMapper.insertUser(new User().setName("hell0").setPassword("123"));
}
@Test
void insertUsers() {
User user1 = new User().setName("aaa").setPassword("123");
User user2 = new User().setName("bbb").setPassword("123");
User user3 = new User().setName("ccc").setPassword("123");
List<User> users = List.of(user1, user2, user3);
userMapper.insertUsers(users);
}
@Test
void deleteUser() {
userMapper.deleteUser(1);
}
@Test
void updateUser() {
User user = new User().setId(2).setName("shi").setPassword("xiao");
userMapper.updateUser(user);
}
@Test
void selectUserById() {
User user = userMapper.selectUserById(2);
System.out.println(user);
}
@Test
void selectAllUsers() {
List<User> users = userMapper.selectAllUsers();
users.forEach(System.out::println);
}
}