jhipster入門疑問之路之五

由於項目需求,需要將以往寫的jpa的數據增刪改查操作換成mybatis,所以稍作了解mybatis

因時間緊迫,並沒有對深入實現原理進行學習,只是查詢相關資料,學習如何使用。在本項目中,因已經有前輩所在準備,故配置之類並未進行修改。

mybatis與spring cloud 結合使用

1 首先是定義domain。如果相關聯查詢,需要在domain中包含索要關聯查詢的domain屬性

    private static final long serialVersionUID = -1654620673909327705L;
    private String userId;
    private String loginCode;
    private String userName;
    private String certType;
    private String certNo;
    private String userCode;
    private String deadline;
    private String orgId;
    private String dptId;
    private String userPassword;
    private String userSex;
    private String userBirthday;
    private String userEmail;
    private String userMobilephone;
    private String userOfficetel;
    private String userEducation;
    private String userCertificate;
    private String entrantsDate;
    private String positionTime;
    private String financialJobTime;
    private String positionDegree;
    private String userAvatar;
    private String offenIp;
    private String userSts = "1";
    private String lastLoginTime;
    private String lastEditPassTime;
    private String lastChgUsr = SecurityUtils.getCurrentUserLogin();
    private String lastChgDt = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
    //private AdminSmDpt adminSmDpt;
    private Set<AdminSmRole> authorities = new HashSet<>();
   // private AdminSmOrg adminSmOrg;
    //private AdminSmInstu adminSmInstu;
代碼中的
Set<AdminSmRole> authorities
是AdminSmUser 這個domain的一個屬性 ,當然也需要建立該domain

public class AdminSmRole implements Serializable{
    private static final long serialVersionUID = -3798852960056031116L;
    private String roleId;
    private String roleCode;
    private String roleName;
    private String orgId;
    private String roleLevel;
    private String roleSts;
    private String lastChgUsr = SecurityUtils.getCurrentUserLogin();
    private String lastChgDt = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");


2建立AdminSmUserMapper.jave 

public interface AdminSmUserMapper {

	public AdminSmUser selectAdminSmUser(@Param("loginCode") String loginCode);
	//public AdminSmUser selectAdminSmUserWithDpt(@Param("loginCode") String loginCode);
	public AdminSmUser selectAdminSmUserWithRoles(@Param("loginCode") String loginCode);
	public AdminSmUser selectAdminSmUserWithAll(@Param("loginCode") String loginCode);
	 //public List<Map<String, Object>> selectAdminSmUserWithAll(@Param("loginCode") String loginCode);
	 public int updatePassword(Map<String, String> paramMap);
	
}
該接口並沒有任何不同(或者是不知道spring cloud實現原理,所以看不出不同)

3 建立AdminSmUserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.com.yusys.yusp.uaa.repository.mapper.AdminSmUserMapper">

	<resultMap id="adminSMWithAll" type="cn.com.yusys.yusp.uaa.domain.AdminSmUser">
		<id column="user_id" property="userId" jdbcType="VARCHAR" />
		<association property="adminSmDpt" javaType="cn.com.yusys.yusp.uaa.domain.AdminSmDpt">
			<id property="dptId" column="dpt_id" />
			<result property="dptName" column="DPT_NAME" />
			<result property="dptCode" column="DPT_CDE" />
		</association>
		<association property="adminSmOrg" javaType="cn.com.yusys.yusp.uaa.domain.AdminSmOrg">
			<id property="orgId" column="org_id" />
			<result property="orgName" column="ORG_NAME" />
			<result property="orgCode" column="ORG_CODE" />
		</association>
		<association property="adminSmInstu" javaType="cn.com.yusys.yusp.uaa.domain.AdminSmInstu">
			<id property="instuId" column="instu_id" />
			<result property="instuName" column="INSTU_NAME" />
			<result property="instuCde" column="INSTU_CDE" />
		</association>
		<collection property="authorities" javaType="java.util.Set" 
			ofType="cn.com.yusys.yusp.uaa.domain.AdminSmRole">
			<id column="ROLE_ID" property="roleId" jdbcType="VARCHAR" />
			<result column="ROLE_CODE" property="roleCode" jdbcType="VARCHAR" />
			<result column="ROLE_NAME" property="roleName" jdbcType="VARCHAR" />
			<result column="ORG_ID" property="orgId" jdbcType="VARCHAR" />
			<result column="ROLE_LEVEL" property="roleLevel" jdbcType="INTEGER" />
			<result column="ROLE_STS" property="roleSts" jdbcType="VARCHAR" />
			<result column="LAST_CHG_USR" property="lastChgUsr" jdbcType="VARCHAR" />
			<result column="LAST_CHG_DT" property="lastChgDt" jdbcType="VARCHAR" />
		</collection>

		
	</resultMap> 
	
	
	<resultMap id="queryForListMap" type="cn.com.yusys.yusp.uaa.domain.AdminSmUser">
		<id column="user_id" property="userId" jdbcType="VARCHAR" />
        <result column="LOGIN_CODE" property ="loginCode" jdbcType="VARCHAR" />
        <result column="USER_NAME" property ="userName" jdbcType="VARCHAR" />
        <result column="CERT_TYPE" property ="certType" jdbcType="VARCHAR" />
        <result column="CERT_NO" property ="certNo" jdbcType="VARCHAR" />
        <result column="USER_CODE" property ="userCode" jdbcType="VARCHAR" />
        <result column="DEADLINE" property ="deadline" jdbcType="VARCHAR" />
        <result column="ORG_ID" property ="orgId" jdbcType="VARCHAR" />
        <result column="DPT_ID" property ="dptId" jdbcType="VARCHAR" />
        <result column="USER_PASSWORD" property ="userPassword" jdbcType="VARCHAR" />
        <result column="USER_SEX" property ="userSex" jdbcType="VARCHAR" />
        <result column="USER_BIRTHDAY" property ="userBirthday" jdbcType="VARCHAR" />
        <result column="USER_EMAIL" property ="userEmail" jdbcType="VARCHAR" />
        <result column="USER_MOBILEPHONE" property ="userMobilephone" jdbcType="VARCHAR" />
        <result column="USER_OFFICETEL" property ="userOfficetel" jdbcType="VARCHAR" />
        <result column="USER_EDUCATION" property ="userEducation" jdbcType="VARCHAR" />
        <result column="USER_CERTIFICATE" property ="userCertificate" jdbcType="VARCHAR" />
        <result column="ENTRANTS_DATE" property ="entrantsDate" jdbcType="VARCHAR" />
        <result column="POSITION_TIME" property ="positionTime" jdbcType="VARCHAR" />
        <result column="FINANCIAL_JOB_TIME" property ="financialJobTime" jdbcType="VARCHAR" />
        <result column="POSITION_DEGREE" property ="positionDegree" jdbcType="VARCHAR" />
        <result column="USER_AVATAR" property ="userAvatar" jdbcType="VARCHAR" />
        <result column="OFFEN_IP" property ="offenIp" jdbcType="VARCHAR" />
        <result column="USER_STS" property ="userSts" jdbcType="VARCHAR" />
        <result column="LAST_LOGIN_TIME" property ="lastLoginTime" jdbcType="VARCHAR" />
        <result column="LAST_EDIT_PASS_TIME" property ="lastEditPassTime" jdbcType="VARCHAR" />
        <result column="LAST_CHG_USR" property ="lastChgUsr" jdbcType="VARCHAR" />
        <result column="LAST_CHG_DT" property ="lastChgDt" jdbcType="VARCHAR" />
        <result column="HEAD_PORT" property ="headPort" jdbcType="VARCHAR" />
		<collection property="authorities" javaType="java.util.Set"
			ofType="cn.com.yusys.yusp.uaa.domain.AdminSmRole">
			<id column="ROLE_ID" property="roleId" jdbcType="VARCHAR" />
			<result column="ROLE_CODE" property="roleCode" jdbcType="VARCHAR" />
			<result column="ROLE_NAME" property="roleName" jdbcType="VARCHAR" />
			<result column="ORG_ID" property="orgId" jdbcType="VARCHAR" />
			<result column="ROLE_LEVEL" property="roleLevel" jdbcType="INTEGER" />
			<result column="ROLE_STS" property="roleSts" jdbcType="VARCHAR" />
			<result column="LAST_CHG_USR" property="lastChgUsr" jdbcType="VARCHAR" />
			<result column="LAST_CHG_DT" property="lastChgDt" jdbcType="VARCHAR" />
		</collection>
	</resultMap>
	<!-- 使用resultMap映射實體類和字段之間的一一對應關係 -->
	<resultMap type="cn.com.yusys.yusp.uaa.domain.AdminSmUser" id="dpt">
		<id column="user_id" property="userId" jdbcType="VARCHAR" />
		<result column="dpt_id" property="dptId" />
		<association property="adminSmDpt" javaType="cn.com.yusys.yusp.uaa.domain.AdminSmDpt">
			<id property="dptId" column="dpt_id" />
			<result property="dptName" column="DPT_NAME" />
		</association>
	</resultMap> 
	<select id="selectAdminSmUser" parameterType="String"
		resultType="cn.com.yusys.yusp.uaa.domain.AdminSmUser">

		select 
		USER_ID , LOGIN_CODE, USER_NAME, CERT_TYPE , CERT_NO , USER_CODE , DEADLINE , ORG_ID , DPT_ID ,
		USER_PASSWORD, USER_SEX , USER_BIRTHDAY , USER_EMAIL , USER_MOBILEPHONE , USER_OFFICETEL , 
		USER_EDUCATION , USER_CERTIFICATE , ENTRANTS_DATE , POSITION_TIME , FINANCIAL_JOB_TIME , 
		POSITION_DEGREE , USER_AVATAR , OFFEN_IP , USER_STS , LAST_LOGIN_TIME , LAST_EDIT_PASS_TIME , 
		LAST_CHG_USR , LAST_CHG_DT , HEAD_PORT

		from admin_sm_USER

		<where>
			<if test="loginCode != null">
				and LOGIN_CODE=#{loginCode}
			</if>
		</where>


	</select>

 	<select id="selectAdminSmUserWithRoles" parameterType="String"
		resultMap="queryForListMap">

		select a.* ,c.ROLE_ID,C.ROLE_CODE,C.ROLE_NAME,C.ORG_ID,C.ROLE_LEVEL,C.ROLE_STS from admin_sm_user a
		left join admin_sm_user_role_rel b on a.user_id=b.user_id
		left join admin_sm_role c on c.role_id=b.role_id


		<where>
			<if test="loginCode != null">
				and a.LOGIN_CODE=#{loginCode}
			</if>
		</where>

	</select>
 
<!-- 	<select id="selectAdminSmUserWithDpt" parameterType="String"
		resultMap="dpt">
		select a.user_id,a.dpt_id,b.dpt_id,b.DPT_NAME from admin_sm_user a
		left join admin_sm_dpt b on a.dpt_id = b.dpt_id

		<where>
			<if test="loginCode != null">
				and a.LOGIN_CODE=#{loginCode}
			</if>
		</where>

	</select> -->
	
	<select id="selectAdminSmUserWithAll" parameterType="String"
		resultMap="adminSMWithAll">
		select a.ORG_ID,a.DPT_ID,a.INSTU_Id,a.USER_ID , a.LOGIN_CODE, a.USER_NAME, a.CERT_TYPE , a.CERT_NO , a.USER_CODE , a.DEADLINE , a.ORG_ID , a.DPT_ID ,
		a.USER_PASSWORD, a.USER_SEX , a.USER_BIRTHDAY , a.USER_EMAIL , a.USER_MOBILEPHONE , a.USER_OFFICETEL , 
		a.USER_EDUCATION , a.USER_CERTIFICATE , a.ENTRANTS_DATE , a.POSITION_TIME , a.FINANCIAL_JOB_TIME , 
		a.POSITION_DEGREE , a.USER_AVATAR , a.OFFEN_IP , a.USER_STS , a.LAST_LOGIN_TIME , a.LAST_EDIT_PASS_TIME , 
		a.LAST_CHG_USR , a.LAST_CHG_DT , a.HEAD_PORT,
		C.ROLE_CODE,C.ROLE_NAME,C.ORG_ID,C.ROLE_LEVEL,C.ROLE_STS,C.ROLE_ID,
		d.INSTU_Id,d.ORG_COdE,d.ORG_NAME,d.UP_ORG_Id, d.ORG_LEVEL,d.ORG_AddR,d.ZIP_CdE,d.CONT_TEL,d.CONT_USR, d.ORG_STS,
		e.DPT_CDE,e.DPT_NAME,e.BELONG_ORG_ID,e.UP_DPT_ID
		
		from admin_sm_user a
		left join admin_sm_user_role_rel b on a.user_id = b.user_id
		left join admin_sm_role  c on  b.role_id = c.role_id 
		left join admin_sm_org  d  on a.org_id = d.org_id 
		left join admin_sm_dpt  e on a.dpt_id = e.dpt_id 
		left join admin_sm_instu f on d.instu_id = f.instu_id 
		<where>
			<if test="loginCode != null">
				and a.LOGIN_CODE=#{loginCode}
			</if>
		</where>

	</select> 
	
	<!-- 根據用戶loginCode修改用戶密碼 -->
	<update id="updatePassword" parameterType="java.util.Map">
		update ADMIN_SM_USER set USER_PASSWORD=#{newPassword, jdbcType=VARCHAR},LAST_CHG_USR=#{user, jdbcType=VARCHAR},
		 LAST_CHG_DT=#{date, jdbcType=VARCHAR} where LOGIN_CODE=#{loginCode, jdbcType=VARCHAR}
	</update>

</mapper>

其中

resultMap 是爲了實現聯合查詢,其中
association 是一對一的關係
collection是一對多的關係。
該步驟就是爲了把查到的數據映射到相應的domain屬性中。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章