1. Mybatis 官网与文档
直接搜索Mybatis你可能会直接得到Mybatis的官网文档,但是这个文档对一些开发集成上使用帮助不大,比如没有讲解Spring如何集成Mybatis等,更多的文档我们可以直接访问mybatis.org,它将会自动跳转到Mybatis的Blog。这里有很多关于Mybatis的资料,如果你有一些找不到的配置,可以来这里看看
2. 直接切入SpringBoot 集成Mybatis
- 项目结构
- 引入依赖
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
- 配置数据库
application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://domain:3306/db?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
- 配置扫描Mapper
@SpringBootApplication
@MapperScan(basePackages = "org.example.mapper")// Mapper接口所在位置
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
- 配置扫描XML
application.yml
配置SQL映射文件所在位置、开启类别名、日志输出
mybatis:
mapper-locations: classpath:org/example/mapper/**/*.xml
#这里如果使用 classpath*:org/example/**/*.xml, 则**可扫描多级目录否则只扫描mapper子级目录,孙子目录不会扫描
# type-aliases-package: org.example.entity
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
pom.xml因Java在打包时,对src目录下只识别java文件,所以我们需要配置build选项,来指定打包我们的xml
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
3. Mapper映射文件XML的DTD去哪里找?
在这里:mybatis – MyBatis 3 | 入门,直接去官网复制就行了
4. IDEA MybatisX 插件
File > Setting > Plugins > 搜索MybatisX
5. 使用注解
如果你使用了@MapperScan, IDEA可能无法识别提示你注入参数,像这样
即便你使用了@MapperScan, 你也可以在对应的Mapper上加上@Mapepr注解,以便IDEA识别
6. For a test
User.java
@Data
@AllArgsConstructor
@NoArgsConstructor
@Alias("User")
public class User {
private Long id;
private String name;
private String gender;
private Integer age;
public User(String name, String gender, Integer age) {
this.name = name;
this.gender = gender;
this.age = age;
}
}
UserMapper.java
@Mapper
public interface UserMapper {
Long saveUser(User user);
}
UserMapper.xml
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mapper.UserMapper">
<insert id="saveUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into users (name, gender,age) values (#{name},#{gender},#{age})
</insert>
</mapper>
Test.java
@SpringBootTest(classes = App.class)
@RunWith(SpringRunner.class)
public class AppTest {
@Autowired
public UserMapper userMapper;
@Test
public void testSaveUser() {
for (int i = 0; i < 20; i++) {
User user = new User(name(), gender(), age());
userMapper.saveUser(user);
System.out.println(user);
}
}
}