MyBatis

本文深入探讨了MyBatis框架的使用优势,如数据库连接池管理、SQL语句与Java代码分离、解决SQL参数不定问题,以及自动结果集封装。同时,详细介绍了MyBatis的配置流程,包括SqlMapConfig.xml全局配置、mapper.xml映射文件、SqlSessionFactory会话工厂、sqlSession会话操作等。并通过案例展示了如何返回主键ID。

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

优点:

  1. 使用数据库连接池管理链接,避免了频繁创建了、关闭链接,浪费资源影响性能的问题。
  2. 用xml管理sql语句,让Java代码和sql语句分离,使得代码更易维护。
  3. 解决了sql语句参数不定的问题。xml中可以通过where条件决定sql语句的条件参数。mybatis将Java对象映射到sql语句,通过statement的parameterType定义输入参数的类型。
  4. mybatis自动将结果集封装成Java对象, 通过statement的resultType定义输出的类型。避免了因sql变化,对结果集处理麻烦的问题。

流程:

  1. mybatis配置
  2. SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
  3. mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
  4. 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
  5. 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
  6. mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
  7. Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
  8. Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
  9. Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

案例

  1. 返回主键id
<INSERT id="addRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId" keyColumn="role_id">
	INSERT into t_sys_role(
		name,status
	)
	values(
	        #{name,jdbcType=VARCHAR},
		#{status,jdbcType=VARCHAR},
	)
</INSERT >

1、添加记录能够返回主键的关键点在于需要在标签中添加以下三个属性<insertuseGeneratedKeys=“true” keyProperty=“id” keyColumn=“id”>。
useGeneratedKeys:必须设置为true,否则无法获取到主键id。
keyProperty:设置为POJO对象的主键id属性名称。
keyColumn:设置为数据库记录的主键id字段名称
2、新添加主键id并不是在执行添加操作时直接返回的,而是在执行添加操作之后将新添加记录的主键id字段设置为POJO对象的主键id属性。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值