初识MyBatis
MyBatis是一款流行的持久层开发框架,以下是关于它的一些基础知识:
定义与作用
MyBatis是支持定制化SQL、存储过程和高级映射的持久层框架,能将Java对象与数据库表记录相互转换,让开发者专注于业务逻辑,而非数据库操作细节。
核心组件
SqlSessionFactory:作为MyBatis的关键对象,用于创建SqlSession。通常通过SqlSessionFactoryBuilder从配置文件或配置对象构建。
SqlSession:代表与数据库的一次会话,可执行SQL命令、事务管理等操作,如调用selectOne、selectList等方法执行查询,用insert、update、delete进行数据更新。
Mapper接口与Mapper XML文件:Mapper接口定义了操作数据库的方法,Mapper XML文件则详细配置了这些方法对应的SQL语句及参数映射等信息,通过namespace与Mapper接口关联,其中的SQL语句可使用动态SQL标签实现灵活查询。
优势
灵活性高:在Mapper XML文件中能自由编写复杂SQL,适应各种数据库操作需求,还支持动态SQL,可根据不同条件生成不同SQL语句。
可维护性强:SQL语句与Java代码分离,便于修改和维护,提高了代码的可读性和可维护性。
性能优化便利:开发者能对SQL进行精细优化,还支持缓存机制,如一级缓存和二级缓存,提升数据访问性能,减少数据库查询次数。
简单示例
以下是一个简单的MyBatis使用示例,假设要查询数据库中的用户信息:
创建Mapper接口
java
public interface UserMapper {
User getUserById(int id);
}
- 创建Mapper XML文件
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" resultMap="UserResultMap">
SELECT id, username, password
FROM users
WHERE id = #{id}
</select>
</mapper>
使用MyBatis查询数据
java
public class Main {
public static void main(String[] args) {
// 读取MyBatis配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 打开SqlSession
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
// 获取Mapper接口实例
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 调用Mapper方法查询用户
User user = userMapper.getUserById(1);
System.out.println(user.getUsername());
} catch (IOException e) {
e.printStackTrace();
}
}
}