mybatis学习遇到的问题
直接上代码一对一查询:
<mapper namespace="com.inspur.idcrm.mapper.UserMapper">
<resultMap type="User" id="userMap">
<id property="id" column="id"/>
<result property="userID" column="USER_ID"/>
<result property="userName" column="USER_NAME"/>
<result property="userSex" column="USER_SEX"/>
<result property="userTel" column="USER_TEL"/>
<result property="userEmail" column="USER_EMAIL"/>
<association property="customer" column="USER_CUSTOMERID" javaType="Customer">
<id property="id" column="id" />
<result property="customerCode" column="CUSTOMER_CODE"/>
<result property="customerName" column="CUSTOMER_NAME"/>
<result property="customeraddress" column="CUSTOMER_ADDRESS"/>
<result property="customerContancts" column="CUSTOMER_CONTANCTS"/>
<result property="customerTel" column="CUSTOMER_TEL"/>
<result property="customerEmail" column="CUSTOMER_EMAIL"/>
<result property="customerMemo" column="CUSTOMER_MEMO"/>
<result property="customerTypeID" column="CUSTOMER_TYPEID"/>
<result property="manageName" column="MANAGE_NAME"/>
<result property="manager" column="MANAGER"/>
<result property="managerTel" column="MANAGER_TEL"/>
<result property="customerTeName" column="CUSTOMER_TE_NAME"/>
<result property="customerTeTel" column="CUSTOMER_TE_TEL"/>
</association>
<collection property="roleList" javaType="ArrayList" column="id" ofType="Role" select="selectUserRoles" >
<id property="id" column="id"/>
<result property="roleName" column="role_name" javaType="string" jdbcType="VARCHAR"/>
<result property="roleDesc" column="role_desc" javaType="string" jdbcType="VARCHAR"/>
</collection>
</resultMap>
customer对象与User是一对一关系,通过配置association 进行关联,查询用户信息,同时把用户所属单位也查询出来。
一对多关系
配置collection进行关联,查询用户信息把每个用户的所有角色信息也查询出来
<select id="getUserList2"parameterType="User" resultType="java.util.List" resultMap="userMap">
select *
from t_user as u, t_customer as c where 1=1 and u.USER_CUSTOMERID = c.id
<if test="id!=null and id!=''">
and id=#{id}
</if>
<if test="userID!=null and userID!=''">
and USER_ID=#{userID}
</if>
<if test="userName!=null and userName!=''">
and USER_NAME LIKE CONCAT(CONCAT('%', #{userName}),'%')
</if>
<if test="userSex!=null and userSex!=''">
and USER_SEX =#{userSex}
</if>
<if test="userTel!=null and userTel!=''">
and USER_TEL LIKE CONCAT(CONCAT('%', #{userTel}),'%')
</if>
<if test="userEmail!=null and userEmail!=''">
and USER_EMAIL LIKE CONCAT(CONCAT('%', #{userEmail}),'%')
</if>
<if test="customer!=null and customer!=''">
and USER_CUSTOMERID=#{customer.id}
</if>
</select>
<select id="selectUserRoles" resultType="Role" parameterType="int">
select r.id,r.role_nameas roleName,r.role_desc as roleDesc from t_role r left join t_user_role u on r.id=u.ROLE_ID where u.USER_ID=#{id}
</select>
<select id="selectUserRoles" resultType="Role" parameterType="int">
select r.id,r.role_name as roleName,r.role_desc as roleDesc from t_role r left join t_user_role u on r.id=u.ROLE_ID where u.USER_ID=#{id}
</select>
这个地方遇到一个问题,由于返回时resultType是javabean,如果sql语句中不加别名,无法与javabean的属性进行一一对应,如果不添加别名,需要配置一个role的resultMap。初学者出现情况
页:
[1]