Mapper.xml配置文件解读

这篇博客详细解析了Mybatis的Mapper.xml配置文件,包括namespace与mapper接口的关联,resultType与resultMap的区别与使用场景,以及CRUD操作中的动态SQL。还探讨了批量操作的高效实现方式,如通过动态SQL执行批量SQL语句,以及如何在联合查询中处理1对1和1对多的关系,包括嵌套结果和嵌套查询,并提醒了注意N+1问题和懒加载的解决方案。
摘要由CSDN通过智能技术生成

mapper.xml配置文件解读

①. namespace:与对应mapper接口关联,使其方法与xml定义的标签id相对应。

②. resultType:设置sql语句返回的类型,可以是基本类型,也可以是实体类类型,实体类一般全包名作为参数设置,也可以在mybatis配置文件中设置实体类的别名来设置其resultType。其优点在于简单方便,缺点在于需要创建实体类才能这么用,在于一些多表关联,复杂的结果映射关系中不适用。

③. resultMap:设置sql语句返回的结果集,为自定义映射,在嵌套查询、嵌套结果中使用,可以很方便的对结果集进行配置映射关系,在嵌套查询中甚至不需要写连接语句即可完成关联1对1或1对多查询,底层是做了两次查询,所以嵌套查询存在一个N+1的问题,有时候不需要关联查询但每次都会把关联结果查出来,这就是N+1问题,可以通过在Mybatis配置文件中的<settings/>标签中开启懒加载,底层原理是用了一个动态代理去代理结果集,当用到或是取出结果集中关联的对象时,才进行第二次查询,否则只进行一次查询。

④. Mybatis提供了CRUD四种查询标签例如<select/>等来帮助编写SQL语句,几个标签中常用属性如id需要与mapper接口方法名称一致,用来对应namespace中的mapper接口。如resultType、resultMap上面介绍过了。在<insert/>标签中有useGeneratedKeys属性会自动使用JDBC的getGeneratedKeys方法来取出数据库自增的主键(需要有自增字段),在MySql与SQL Server中可以使用,但在oracle需要创建序列,然后使用<selectKey/>来自增主键,例:

  <insert id="insert" parameterType="com.demo.Pojo" useGeneratedKeys="true" keyProperty="id" >
    insert into DEMO (ID, NAME)
    values (${id}, #{name})
    <selectKey keyProperty="id" order="BEFORE" resultType="int">
      SELECT SEQ_DEMO_ID.NEXTVAL FROM dual
    </selectKey>
  </insert>

⑤. 动态SQL:Mybatis提供动态SQL标签,类似与JSP中的J

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值