Mybatis属性用法

来源:互联网 发布:物料管理系统. java 编辑:程序博客网 时间:2024/05/05 21:19

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">SELECTorders.*FROMorders</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框架(对象关系映射)


0 0
原创粉丝点击