MyBatis是一个轻量级、简单易用的持久层框架,它与数据库交互更加灵活,提供了强大的SQL映射功能。
一、什么是MyBatis MyBatis是一款优秀的持久层框架,它将Java对象与数据库中的数据进行映射,实现了对象关系映射(ORM)的功能。与其他ORM框架相比,MyBatis更加轻量级,更加灵活,不需要进行复杂的配置和学习。
二、MyBatis的基本原理 MyBatis的基本原理是通过SQL映射文件(Mapper.xml)将Java方法与SQL语句进行映射,然后通过MyBatis的核心类SqlSessionFactory和SqlSession来执行SQL语句并返回结果。开发者只需要关注SQL映射和Java方法的编写,无需手动处理数据库连接和结果集。
三、MyBatis的入门步骤
- 导入依赖 在项目的pom.xml文件中,添加MyBatis的依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
- 配置数据库连接 在项目的配置文件中,配置数据库相关信息:
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
</configuration>
- 编写SQL映射文件 创建一个Mapper.xml文件,定义SQL语句和Java方法的映射关系:
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
- 编写Java接口和实体类 创建一个Java接口,定义方法和参数,并使用@Mapper注解标识该接口为MyBatis的Mapper接口:
@Mapper
public interface UserMapper {
User getUserById(Integer id);
}
创建一个实体类User,与数据库中的user表对应:
public class User {
private Integer id;
private String name;
// 省略getter和setter方法
}
- 创建SqlSessionFactory和SqlSession 在应用程序中,创建SqlSessionFactory和SqlSession对象,用于执行SQL语句:
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
- 调用Mapper接口方法 通过SqlSession的getMapper方法获取Mapper接口的实现类,并调用方法:
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);
- 关闭SqlSession 在执行完数据库操作后,记得关闭SqlSession:
sqlSession.close();
四、总结
MyBatis作为一款简单易用的持久层框架,可以帮助开发者更加便捷地操作数据库。