本文演示SpringBoot整合MyBatis。
一、项目搭建
新建一个SpringBoot项目,引入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>8.0.22</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
二、配置文件
配置项目端口号,添加数据库数据源配置信息、MyBatis配置、日志配置:
server:
port: 8989
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: ****
password: ****
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.ldl.study.demo.domain
logging:
level:
com.ldl.study.demo.mapper: debug
三、库表准备
使用MySQL,新建mytest数据库及student表,并插入记录:
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`age` int(10) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
INSERT INTO `student` VALUES (1, '张三', 15);
INSERT INTO `student` VALUES (2, '李四', 23);
四、编码实现
①创建实体类Student如下:
@Data
public class Student {
private Long id;
private String name;
private Integer age;
}
②编写Mapper类:
public interface StudentMapper {
List<Student> queryList();
}
③编写映射文件:
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ldl.study.demo.mapper.StudentMapper">
<resultMap id="BaseResultMap" type="com.ldl.study.demo.domain.Student" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="VARCHAR" />
</resultMap>
<select id="queryList" resultMap="BaseResultMap">
select id,name,age from student
</select>
</mapper>
④编写Service类及其实现类:
public interface StudentService {
List<Student> queryList();
}
@Service(value = "studentService")
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public List<Student> queryList() {
return studentMapper.queryList();
}
}
⑤编写Controller类:
@RestController
@RequestMapping("/")
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("queryList")
public List<Student> queryList(){
return studentService.queryList();
}
}
⑥启动类
@SpringBootApplication
@MapperScan("com.ldl.study.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
⑦测试请求及响应:
测试验证OK。