最终结果的展示
1. 首先导入所需的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2. 配置数据源
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.password=root
spring.datasource.username=root
mybatis.type-aliases-package=com.hxb.entity //别名
mybatis.mapper-locations=classpath:mappers/*.xml // xml文件存放位置
3. 写实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private String pwd;
}
4.写实体类对应的Mapper接口
@Mapper
//@Repository
public interface UserMapper {
// 增加
public int addUser(User user);
// 删除
public int deleteUser(int id);
// 更新
public int updateUser(User user);
// 查询全部
public List<User> queryUserAll();
// 查询单个
public User queryUserById(int id);
}
其中mapper注解可以不写,但是要求在启动类上加上mapperscan注解,省去每个mapper类都要加注解的麻烦,也可以避免遗漏
5. 书写对应的xml文件,放在resources文件夹下
<?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.hxb.mappers.UserMapper">
<!-- 删掉注释的就是xml文件的纯净版了-->
<!-- <select id="queryUserById" resultType="user">-->
<!-- select * from user where id = #{id};-->
<!-- </select>-->
</mapper>
6. 启动类上的注解
@MapperScan("com.hxb.mappers") // 加这一行
@SpringBootApplication
public class MybatisAndPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisAndPlusApplication.class, args);
}
}
7. 测试
@SpringBootTest
class MybatisAndPlusApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
User user = userMapper.queryUserById(1);
System.out.println(user);
}
}
提示:在这里的UserMapper可能会爆红,可以换为@Resource注解,但是都不会报错。
注意点
需要特别注意的一点是在主启动类上加上MapperScan注解,并且注解的地址写成@MapperScan(“com.hxb.mappers”),不要写成@MapperScan(“com.hxb.mappers.*”),这样会报错,找不到注入类,mapper找不到。