1、MyBatis + XML
1.1、引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.eliang</groupId>
<artifactId>springboot04</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot04</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency> <!-- 本示例,我们使用 MySQL -->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<!-- 实现对 MyBatis 的自动化配置 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.2、Application
添加@MapperScan
,扫描mapper接口所在的包
@SpringBootApplication
@MapperScan("com.eliang.springboot04.mapper")
public class Springboot04Application {
public static void main(String[] args) {
SpringApplication.run(Springboot04Application.class, args);
}
}
1.3、配置文件
#application.yml
spring:
# datasource 数据源配置内容
datasource:
url: jdbc:mysql://192.168.8.150:3306/test_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
# mybatis 配置内容
mybatis:
mapper-locations: classpath:mapper/*.xml # 配置 Mapper XML 地址
type-aliases-package: com.eliang.springboot04.po # 配置数据库实体包路径
configuration:
map-underscore-to-camel-case: true # 使用驼峰命名法转换字段。
#显示执行的sql mapper接口的包路径
logging:
level:
com:
eliang:
springboot04:
mapper: debug
1.4、User实体类
@Data
public class User {
private Integer id;
private String username;
private String password;
private Date createTime;
}
建表语句:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户名',
`password` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
1.5、UserMapper
@Repository
public interface UserMapper {
int insert(User user);
}
在resources/mapper
下对应的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.eliang.springboot04.mapper.UserMapper">
<sql id="FIELDS">
id, username, password, create_time
</sql>
<insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO users (
username, password, create_time
) VALUES (
#{username}, #{password}, #{createTime}
)
</insert>
</mapper>
1.6、测试类UserMapperTest
@SpringBootTest(classes = Springboot04Application.class)
class UserMapperTest {
@Autowired
UserMapper userMapper;
@Test
void insert() {
User user = new User();
user.setUsername("test2");
user.setPassword("123456");
user.setCreateTime(new Date());
userMapper.insert(user);
}
}
1.7、插件
idea的插件free mybatis plugin
- 提供xml和dao层的互相跳转功能,箭头形状。
- mapper生成xml文件
- mybatis自动补全及语法错误提示
- 集成mybatis generator gui界面
2、MyBatis + 注解
在 [application.yaml
]配置文件中,我们可以删除 mapper-locations
配置项。
可以删除 UserMapper.xml
配置文件。
UserMapper.java
@Repository
public interface UserMapper {
@Insert("INSERT INTO users(username, password, create_time) VALUES(#{username}, #{password}, #{createTime})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int insert2(User user);
}
版权声明:本文为liang63487458原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。