MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,下面我将详细介绍如何使用 MyBatis 查询数据库。

配置 MyBatis
确保你的项目中已经添加了 MyBatis 的依赖,以下是一个简单的配置示例:
<dependencies>
<! MyBatis 依赖 >
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<! MySQL 驱动依赖 >
<dependency>
<groupId>mysql</groupId>
<artifactId>mysqlconnectorjava</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
创建一个配置文件 mybatisconfig.xml:
<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE configuration
PUBLIC "//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis3config.dtd">
<configuration>
<! 数据库配置 >
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/your_database"/>
<property name="username" value="your_username"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<! 映射文件 >
<mappers>
<mapper resource="com/your/package/mapper/YourMapper.xml"/>
</mappers>
</configuration>
创建 Mapper 接口
在 com/your/package/mapper 目录下创建一个接口 YourMapper.java:
package com.your.package.mapper;
import java.util.List;
public interface YourMapper {
List<YourEntity> selectAll();
YourEntity selectById(int id);
}
创建 Mapper 映射文件
在 com/your/package/mapper 目录下创建一个 XML 文件 YourMapper.xml:

<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE mapper
PUBLIC "//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis3mapper.dtd">
<mapper namespace="com.your.package.mapper.YourMapper">
<select id="selectAll" resultType="com.your.package.entity.YourEntity">
SELECT * FROM your_table
</select>
<select id="selectById" parameterType="int" resultType="com.your.package.entity.YourEntity">
SELECT * FROM your_table WHERE id = #{id}
</select>
</mapper>
使用 MyBatis 查询数据库
在项目中创建一个 MyBatisUtil 工具类,用于获取 SqlSessionFactory:
package com.your.package.util;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class MyBatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
InputStream inputStream = MyBatisUtil.class.getClassLoader().getResourceAsStream("mybatisconfig.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
在业务代码中,使用 MyBatis 查询数据库:
package com.your.package.service;
import com.your.package.entity.YourEntity;
import com.your.package.mapper.YourMapper;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class YourService {
public List<YourEntity> getAll() {
try (SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession()) {
YourMapper mapper = session.getMapper(YourMapper.class);
return mapper.selectAll();
}
}
public YourEntity getById(int id) {
try (SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession()) {
YourMapper mapper = session.getMapper(YourMapper.class);
return mapper.selectById(id);
}
}
}
FAQs
Q1:MyBatis 的优势是什么?
A1:MyBatis 的优势包括:

- 简化 JDBC 代码,提高开发效率。
- 支持自定义 SQL 语句,灵活性强。
- 支持缓存机制,提高查询性能。
- 支持多种数据库,兼容性好。
Q2:如何使用 MyBatis 进行分页查询?
A2:使用 MyBatis 进行分页查询,可以通过以下步骤实现:
- 在 Mapper 映射文件中添加分页查询的 SQL 语句,使用
LIMIT和OFFSET子句进行分页。 - 在业务代码中,传入当前页码和每页显示的记录数,计算
LIMIT和OFFSET的值。 - 调用 MyBatis 的查询方法,传入分页参数,获取分页结果。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/192089.html