一直使用mybatis-plus和jpa,好久没有使用只集成mybatis的项目,这里记录一下,方便以后快速使用
1、创建项目
在IDEA上使用Spring Initializr
创建mybatis-test
项目,选择DevTools
、Lombok
、Spring Web
,Mbatis
和MySql
,依赖如下
<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.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</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>
</dependencies>
2、配置
修改resource
目录下的application.properties
改为 application.yml
,内容如下:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# 地址修改为要操作的库
url: jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
mybatis:
# resource的mapper里存放xml
mapper-locations: classpath*:mapper/*.xml
# 实体类的位置
type-aliases-package: cn.amoqi.cloud.entity
configuration:
# 自动将_转换对应实体类为驼峰的形式
map-underscore-to-camel-case: true
# 显示打印日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
在school
库里创建student
表,没有school库可以创建一个
# 创建数据库
CREATE DATABASE `school` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
# 创建`student`表,并插入数据
CREATE TABLE `student` (
`id` int(11) DEFAULT NULL COMMENT 'ID',
`name` varchar(100) DEFAULT NULL COMMENT '名字',
`address` varchar(100) DEFAULT NULL COMMENT '地址\n',
`sex` int(11) DEFAULT NULL COMMENT '性别',
`create_date` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生';
INSERT INTO school.student (id, name, address, sex, create_date) VALUES (1, '张三', '北京', 1, '2022-06-18');
INSERT INTO school.student (id, name, address, sex, create_date) VALUES (2, '李四', '南京', 1, '2022-06-17');
INSERT INTO school.student (id, name, address, sex, create_date) VALUES (3, '王五', '北京', 2, '2022-06-25');
在启动类Application
上加入mapper的扫描注解,让mapper注入到容器中去
@MapperScan(basePackages = "cn.amoqi.cloud.mapper")
在entity里创建student实体
package cn.amoqi.cloud.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class Student implements Serializable {
private Integer id;
private String name;
private String address;
private Integer sex;
private Date createDate;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", address='" + address + '\'' +
", sex=" + sex +
", createDate=" + createDate +
'}';
}
}
在代码结构里创建mapper文件夹放入StudentMapper
接口,内容如下
package cn.amoqi.cloud.mapper;
import cn.amoqi.cloud.entity.Student;
import java.util.List;
public interface StudentMapper {
List<Student> list();
}
在resource
资源目录下创建mapper
文件夹,在mapper
文件夹下面创建文件UserMapper.xml
,内容如下
注意namespace
的内容为mapper
接口的地址
<?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="cn.amoqi.cloud.mapper.StudentMapper">
<select id="list" resultType="cn.amoqi.cloud.entity.Student">
select * from student
</select>
</mapper>
在测试类中测试
@SpringBootTest
class MybatisTest2ApplicationTests {
@Autowired
private StudentMapper studentMapper;
@Test
void contextLoads() {
List<Student> list = studentMapper.list();
list.stream().forEach(System.out::println);
}
}