Mybatis属性用法

1.主键返回(mysql)

1)自增主键返回

		<!-- 
		将插入数据的主键返回,返回到user对象中
		
		SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用与自增主键
		
		keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性
		order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序
		resultType:指定SELECT LAST_INSERT_ID()的结果类型
		 -->
		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
			SELECT LAST_INSERT_ID()
		</selectKey>

2)非自增主键返回

使用mysqluuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位。

		<!-- 
		使用mysql的uuid()生成主键
		执行过程:
		首先通过uuid()得到主键,将主键设置到user对象的id属性中
		其次在insert执行时,从user对象中取出id属性值
		 -->
		<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
			SELECT uuid()
		</selectKey>

2.自定义PO对象resultMap定义

1)一对一查询

<resultMap type="cn.itcast.mybatis.po.Orders" id="userordermap">
<!-- 这里的id,是mybatis在进行一对一查询时将user字段映射为user对象时要使用,必须写 -->
<id property="id" column="id"/>
<result property="user_id" column="user_id"/>
<result property="number" column="number"/>
<association property="user" javaType="cn.itcast.mybatis.po.User">
<!-- 这里的id为user的id,如果写上表示给user的id属性赋值 -->
<id property="id" column="user_id"/>
<result property="username" column="username"/>
<result property="address" column="address"/>
</association>
</resultMap>

2)一对多查询

<!-- 订单信息resultmap -->
<resultMap type="cn.itcast.mybatis.po.Orders" id="userorderdetailmap">
<id property="id"column="id"/>
<result property="user_id" column="user_id"/>
<result property="number" column="number"/>
<association property="user" javaType="cn.itcast.mybatis.po.User">
<id property="id" column="user_id"/>
<result property="username" column="username"/>
<result property="address" column="address"/>
</association>
<collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
	<id property="id" column="orderdetail_id"/>
	<result property="items_id" column="items_id"/>
	<result property="items_num" column="items_num"/>
</collection>
</resultMap>

3)多对多查询

<!-- 一对多查询
	查询用户信息、关联查询订单、订单明细信息、商品信息
	 -->
	 <resultMap type="cn.itcast.mybatis.po.User" id="userOrderListResultMap">
	 	<id column="user_id" property="id"/>
		<result column="username" property="username"/>
	 	<collection property="orders" ofType="cn.itcast.mybatis.po.Orders">
	      <id  column="id" property="id"/>
	      <result property="number" column="number"/>
	     	<collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
	     	 	<id  column="orderdetail_id" property="id"/>
	      		<result property="ordersId" column="id"/>
	     		<result property="itemsId" column="items_id"/>
	      		<result property="itemsNum" column="items_num"/>
	      		<association property="items" javaType="cn.itcast.mybatis.po.Items">
		  			 <id column="items_id" property="id"/>
		   			 <result column="items_name" property="name"/>
		   			 <result column="items_detail" property="detail"/>
				</association>
	   		</collection>
	   </collection>
3.延迟加载

开启延时加载配置

<settings>
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
</settings>

1)一对一延迟加载

<select id="findOrdersList3" resultMap="userordermap2">
	SELECT
	orders.*
	FROM
	orders
</select>

<!-- 订单信息resultmap -->
<resultMap type="cn.itcast.mybatis.po.Orders" id="userordermap2">
<id property="id" column="id"/>
<result property="user_id" column="user_id"/>
<result property="number" column="number"/>
<association property="user" javaType="cn.itcast.mybatis.po.User" select="findUserById" column="user_id"/>
</resultMap>

association

select="findUserById":指定关联查询sqlfindUserById

column="user_id":关联查询时将users_id列的值传入findUserById

最后将关联查询结果映射至cn.itcast.mybatis.po.User

2)一对多延迟加载

一对多延迟加载的方法同一对一延迟加载,在collection标签中配置select内容。


ps:ORM框架(对象关系映射)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值