MyBatis介绍

本文深入探讨了MyBatis框架的使用与优化,包括自定义SQL、存储过程的支持,以及如何通过XML或注解配置实现JavaPOJO与数据库记录的映射。详细介绍了MyBatis的配置流程,从构建SqlSessionFactory到执行SQL语句,再到事务管理,展示了其在提高代码灵活性、解耦SQL与程序代码、利用数据库连接池和动态SQL方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述
  • 持久性框架,支持自定义SQL、存储过程和高级映射
  • 消除了几乎所有的JDBC代码以及参数的手动设置和结果检索
  • 可以使用简单的XML或注解进行配置,并将图元、映射接口和Java POJO映射到数据库记录

流程图

在这里插入图片描述


原理
  • (1)应用程序通过SqlSessionFactoryBuilder从mybatis的配置文件中构建出SqlSessionFactory
<!-- mybatis-config.xml文件 -->
<configuration>

   <!--使用properties来引入外部properties配置文件的内容 -->
   <properties resource="dbconfig.properties"> </properties>

   <environments default="development">
      <environment id="development">
         <transactionManager type="JDBC" />
         <dataSource type="POOLED">
            <property name="driver" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
         </dataSource>
      </environment>
   </environments>
   
   <!-- 将sql映射文件注册到全局配置文件(mybatis-config.xml)中 -->
   <mappers>
      <mapper resource="xxxMapper" />
   </mappers>

</configuration>
//从XML构建SqlSessionFactory
	String resource = "xxx/xxx/mybatis-config.xml";
	
	InputStream inputStream = resources.getResourceAsStream(resource);
	
	SqlsSessionFactory sqlsSessionFactory = new SqlsSessionFactoryBuilder().build(inputStream);
  • (2)SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并执行Mapper映射的SQL语句,完成对数据库的CRUD和事务的提交
  • 注:sqlSession 是单线程对象,线程不安全,是持久化操作的独享对象,类似jdbc中的Connection,底层封装了jdbc的连接
<!-- xxxMapper文件-->
	<mapper namespace="org.mybatis.example.BlogMapper">
	
  		<select id="selectBlog" resultType="Blog">
   			select * from Blog where id = #{id}
  		</select>
  		
	</mapper>
try (SqlSession session = sqlSessionFactory.openSession()) {

  BlogMapper mapper = session.getMapper(BlogMapper.class);
  
  Blog blog = mapper.selectBlog(101);
}
  • (3)关闭SqlSession,顺序与开启相反。
JDBC–>MyBatis 优化

(1)灵活

  • sql语句写在xml文件里,便于统一管理和优化

(2)sql与程序代码解耦

  • 通过提供DAO层,将业务逻辑与数据访问逻辑分离,便于维护

(3)使用数据库连接池对连接进行管理

  • 统一从DataSource里面获取数据库连接,节约资源,加快连接

(4)提供xml标签,支持动态sql
(5)对数据库操作结果的映射和结果缓存


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值