MyBatis 是一个优秀的持久层框架,它简化了 JDBC 的使用,使得 Java 程序与数据库之间的交互更加容易。
MyBatis 与 Spring Boot 的集成可以通过 mybatis-spring-boot-starter
来简化配置,使得 MyBatis 能够在 Spring Boot 应用中更加方便地使用。
首先,在你的 pom.xml
文件中添加 mybatis-spring-boot-starter
和数据库驱动的依赖。例如,如果你使用的是 MySQL 数据库,可以这样添加依赖:
xml<dependencies>
<!-- MyBatis Spring Boot Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>最新版本号</version> <!-- 请替换为当前最新的版本号 -->
</dependency>
<!-- MySQL Connector Java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 其他必要的依赖 -->
</dependencies>
在 application.properties
或者 application.yml
文件中配置数据源信息。以 application.properties
为例:
propertiesspring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis 配置 mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.yourproject.model
其中,mybatis.mapper-locations
指定了 MyBatis 映射文件的位置,mybatis.type-aliases-package
定义了实体类所在的包。
创建 Mapper 接口,并在同一目录下创建对应的 XML 映射文件(如果需要的话)。Mapper 接口定义了数据库操作方法,而 XML 文件则包含了具体的 SQL 语句。例如:
UserMapper.java
javapackage com.example.yourproject.mapper;
import com.example.yourproject.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(@Param("id") int id);
}
UserMapper.xml
若你需要更复杂的查询,可以在 resources/mapper
目录下创建 UserMapper.xml
文件来编写 SQL 语句。
在你的 Service 或者 Controller 中通过自动装配(@Autowired
)的方式注入 Mapper 接口,然后调用其方法进行数据库操作。
javaimport com.example.yourproject.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findUserById(int id) {
return userMapper.getUserById(id);
}
}
Maven 依赖:如果你的项目是基于 Maven 构建的,你可以在 pom.xml
文件中添加 MyBatis 的依赖来引入 MyBatis。
xml<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version> <!-- 版本号请根据实际情况替换 -->
</dependency>
<!-- 如果需要与 Spring 集成,还需要加入下面的依赖 -->
<dependency>
<groupId>org.mybatis.spring</groupId>
<artifactId>mybatis-spring</artifactId>
<version>x.x.x</version> <!-- 版本号请根据实际情况替换 -->
</dependency>
手动下载 JAR 包:如果项目不是基于 Maven 或 Gradle 这样的构建工具,你可以直接从 MyBatis 官网下载 JAR 包,并将其添加到项目的类路径下。
配置文件:首先,你需要创建一个 MyBatis 的配置文件 mybatis-config.xml
,用于配置 MyBatis 的运行环境,包括数据源、事务管理器等。
xml<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
编写 Mapper XML 文件:为每个需要操作数据库的对象编写对应的 Mapper XML 文件,定义 SQL 语句以及结果映射关系。
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.example.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="hashmap">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
接口定义:针对每一个 Mapper XML 文件,可以定义相应的 Java 接口。MyBatis 可以自动将执行 SQL 并映射结果的工作绑定到这些接口方法上。
javapackage com.example.mapper;
import java.util.HashMap;
public interface UserMapper {
HashMap<String, Object> getUserById(int id);
}
SqlSessionFactory:在代码中通过 MyBatis 提供的 SqlSessionFactoryBuilder
来读取配置文件并创建 SqlSessionFactory
实例,再由 SqlSessionFactory
创建 SqlSession
实例进行数据库操作。
javaString resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
HashMap<String, Object> user = mapper.getUserById(1);
System.out.println(user);
}