MyBatis总结

本文详细介绍了MyBatis的工作原理,包括映射器的概述,自定义主键的两种情况,重点讲解了结果映射集、级联关系和动态SQL的使用。在自定义主键部分,提到了如何处理数据库不支持自动递增的情况。在级联关系中,阐述了一对一、一对多和多对多的级联查询配置。动态SQL部分,涵盖了等元素的用法。
摘要由CSDN通过智能技术生成

工作原理

在这里插入图片描述

映射器概述

元素名称 描述 备注
select 自定义参数、返回集
insert 有keyProperty属性:返回值将作为该属性的值;如:keyProperty=“uid”; useGeneratedKeys:该属性将使MyBatis使用JDBC的getGeneratedKeys()方法获取由数据库内部生产的主键,如MySQL、SQL Server等自动递增的字段,其默认值为false。 返回插入的行数这个整数
update 返回更新的行数
delete 返回删除的行数
sql 定义一部分SQL,可多次引用 <sqld="">SQL语句< /sql>;引用:< include refid=“”/>
resultMap 描述从数据库结果集中加载对象 提供映射规则
属性 描述
id
parameterType 传入SQL语句的参数类型:(mapj接口传参)map,(model对象传参)类路径
resultType SQL语句执行后返回的类型
resultMap 和resultType一样
flushCache 调用SQL是否清空之前的本地缓存和二级缓存,默认false
useCache 默认true,查询结果存入二级缓存中
timeout 超时参数
fetchSize 获取记录的总条数
statementType 使用哪个JDBC的Statement:STATEMENT,PREPARED,CALLABLE
resultSetType ResultSet接口取值:FORWOAD_ONLY(只向前访问),SCROLL_SENSITIVE(双向滚动不及时更新),SCROLL_INSENSITIVE(双向滚动及时更新)

自定义主键:

1需要这条新增数据的主键

mybatis可以将insert的数据的主键返回,直接拿到新增数据的主键,以便后续使用;keyProperty与数据库的id列同名。

<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">  
        SELECT LAST_INSERT_ID()  
</selectKey> 

2 如果数据库不支持主键自动递增

解决方法用MyBatis的< selectKey> 先定义主键,在定义SQL语句

<insert>
<selectKey keyProperty="uid" resultType="Integer" order="BEFORE">
selsect if(max(uid) is null,1,max(uid)+1)as uidfrom user
</selectKey>
insert into user (uid,uname,usex) values(#{uid},#{uname},#{usex})
</insert>

其中order 表示执行顺序;before 在插入前执行,after在插入后执行。

结果映射集

定义映射规则、级联更新、定义类型转换器。

<resultMap type="Model类路径" id="">
    <constructor><!-- 类在实例化时,用来注入结果到构造方法 -->
	<idArg/><!-- ID参数,结果为ID -->
	<arg/><!-- 注入到构造方法的一个普通结果 -->
    </constructor>
    <id/><!-- 用于表示哪个列是主键 -->
    <result property="类中属性" column="数据库列名"/><!-- 注入到字段或JavaBean属性的普通结果 -->
    <association property=""/><!-- 用于一对一关联 -->
    <collection property
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值