最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺出MyBatis中映射文件和實(shí)體類(lèi)的關(guān)聯(lián)性

 更新時(shí)間:2016年09月03日 11:27:44   作者:代碼書(shū)生  
這篇文章主要介紹了MyBatis中映射文件和實(shí)體類(lèi)的關(guān)聯(lián)性的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

mybatis的映射文件寫(xiě)法多種多樣,不同的寫(xiě)法和用法,在實(shí)際開(kāi)發(fā)過(guò)程中所消耗的開(kāi)發(fā)時(shí)間、維護(hù)時(shí)間有很大差別,今天我就把我認(rèn)為比較簡(jiǎn)單的一種映射文件寫(xiě)法記錄下來(lái),供大家修改建議,爭(zhēng)取找到一個(gè)最優(yōu)寫(xiě)法~~:

以User對(duì)象和UserMap.xml為例講解,代碼如下:

User為用戶(hù)實(shí)體類(lèi)(僅作為講解,可以只關(guān)注引用類(lèi)型變量,get/set方法省略):

import com.google.common.collect.Lists;
import com.gukeer.common.persistence.DataEntity;
import com.gukeer.modules.personal.entity.Dept;
import com.gukeer.modules.personal.entity.Staff;
import com.gukeer.modules.school.entity.School;
import java.util.Date;
/**
* 用戶(hù)Entity
*
* auther:cc
* date:2016/9/2
*/
public class User extends DataEntity<User> {
private static final long serialVersionUID = 1L;
private String id;
private Office company; // 歸屬公司
private Office office; // 歸屬部門(mén)
private String loginName;// 登錄名
private String password;// 密碼
private String no; // 工號(hào)
private String name; // 姓名
private String email; // 郵箱
private String phone; // 電話(huà)
private String mobile; // 手機(jī)
private String userType;// 用戶(hù)類(lèi)型
private String loginIp; // 最后登陸IP
private Date loginDate; // 最后登陸日期
private String loginFlag; // 是否允許登陸
private String photo; // 頭像
private String qrCode; // 二維碼
private String oldLoginName;// 原登錄名
private String newPassword; // 新密碼
private String oldLoginIp; // 上次登陸IP
private Date oldLoginDate; // 上次登陸日期
private Dept dept;  //部門(mén)
private Staff staff;  //職位
private Role role; // 根據(jù)角色查詢(xún)用戶(hù)條件
private List<Role> roleList = Lists.newArrayList(); // 擁有角色列表
private School school; //歸屬學(xué)校
private String remarks; // 備注
private User createBy; // 創(chuàng)建者
private Date createDate; // 創(chuàng)建日期
private User updateBy; // 更新者
private Date updateDate; // 更新日期
private String delFlag; // 刪除標(biāo)記(0:正常;1:刪除;2:審核)
}

針對(duì)引用類(lèi)型的成員變量,為了可以在查詢(xún)過(guò)程中直接賦值,在映射文件中可以直接將查詢(xún)結(jié)果賦值給返回的結(jié)果集:

<?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="com.gk.modules.sys.dao.UserDao">
  <!-- 重點(diǎn)就是這一段,將數(shù)據(jù)庫(kù)保存的id字段直接賦值給一個(gè)對(duì)象的成員變量中,比如a.company_id AS "company.id",此時(shí)后臺(tái)查詢(xún)回的List或User對(duì)象中的屬性可以直接通過(guò)user.getCompany().getId()來(lái)獲取到-->
  <!-- 當(dāng)然Company中的引用類(lèi)型變量也可以使用這種方法來(lái)賦值,通過(guò)LEFT JOIN可以聯(lián)查多表,這是數(shù)據(jù)庫(kù)查詢(xún)方面的操作,這里不作討論 -->
<sql id="userColumns">
a.id,
a.company_id AS "company.id",
a.office_id AS "office.id",
a.login_name,
a.password,
a.no,
a.name,
a.email,
a.phone,
a.mobile,
a.user_type,
a.login_ip,
a.login_date,
a.remarks,
a.login_flag,
a.photo,
a.qrcode,
a.create_by AS "createBy.id",
a.create_date,
a.update_by AS "updateBy.id",
a.update_date,
a.del_flag,
c.name AS "company.name",
c.parent_id AS "company.parent.id",
c.parent_ids AS "company.parentIds",
ca.id AS "company.area.id",
ca.name AS "company.area.name",
ca.parent_id AS "company.area.parent.id",
ca.parent_ids AS "company.area.parentIds",
o.name AS "office.name",
o.parent_id AS "office.parent.id",
o.parent_ids AS "office.parentIds",
oa.id AS "office.area.id",
oa.name AS "office.area.name",
oa.parent_id AS "office.area.parent.id",
oa.parent_ids AS "office.area.parentIds",
cu.id AS "company.primaryPerson.id",
cu.name AS "company.primaryPerson.name",
cu2.id AS "company.deputyPerson.id",
cu2.name AS "company.deputyPerson.name",
ou.id AS "office.primaryPerson.id",
ou.name AS "office.primaryPerson.name",
ou2.id AS "office.deputyPerson.id",
ou2.name AS "office.deputyPerson.name",
sc.xxlx AS "school.xxlx",
sc.xxmc AS "school.xxmc"
</sql>
<sql id="userJoins">
LEFT JOIN sys_office c ON c.id = a.company_id
LEFT JOIN sys_area ca ON ca.id = c.area_id
LEFT JOIN sys_office o ON o.id = a.office_id
LEFT JOIN sys_area oa ON oa.id = o.area_id
LEFT JOIN sys_user cu ON cu.id = c.primary_person
LEFT JOIN sys_user cu2 ON cu2.id = c.deputy_person
LEFT JOIN sys_user ou ON ou.id = o.primary_person
LEFT JOIN sys_user ou2 ON ou2.id = o.deputy_person
LEFT JOIN xj_school sc ON sc.id = a.school
</sql>
<!-- 查詢(xún)語(yǔ)句,根據(jù)Id查詢(xún)結(jié)果,返回類(lèi)型可以直接寫(xiě)User,而不同配置resultMap省略編寫(xiě)xml的時(shí)間 -->
<select id="getUserById" resultType="User">
SELECT
<include refid="userColumns"/>
FROM sys_user a
<include refid="userJoins"/>
WHERE a.id = #{id}
</select>
<!-- 查詢(xún)語(yǔ)句,根據(jù)User對(duì)象來(lái)查詢(xún),這里的參數(shù)即為User變量 -->
<select id="getByLoginName" resultType="User" parameterType="User">
SELECT
<include refid="userColumns"/>
FROM sys_user a
<include refid="userJoins"/>
WHERE 
     a.login_name = #{loginName} 
     AND a.del_flag = #{DEL_FLAG_NORMAL}
</select>
<!-- 插入語(yǔ)句,參數(shù)肯定是User對(duì)象 -->
<insert id="insert">
INSERT INTO sys_user(
id, 
company_id, 
office_id, 
login_name, 
password, 
no, 
name, 
email, 
phone, 
mobile, 
user_type, 
create_by, 
create_date, 
update_by, 
update_date, 
remarks, 
login_flag, 
photo, 
qrcode,
del_flag,
dept_id,
staff_id,
school
) VALUES (
#{id}, 
#{company.id}, 
#{office.id}, 
#{loginName}, 
#{password}, 
#{no}, 
#{name}, 
#{email}, 
#{phone}, 
#{mobile}, 
#{userType}, 
#{createBy.id}, 
#{createDate}, 
#{updateBy.id}, 
#{updateDate}, 
#{remarks}, 
#{loginFlag}, 
#{photo}, 
#{qrCode},
#{delFlag},
#{dept.id},
#{staff.id},
#{school.id}
)
</insert>
<!-- 更新語(yǔ)句,參數(shù)也是User對(duì)象 -->
<update id="update">
UPDATE sys_user SET 
company_id = #{company.id}, 
office_id = #{office.id}, 
login_name = #{loginName}, 
password = #{password}, 
no = #{no}, 
name = #{name}, 
email = #{email}, 
phone = #{phone}, 
mobile = #{mobile}, 
user_type = #{userType}, 
update_by = #{updateBy.id}, 
update_date = #{updateDate}, 
remarks = #{remarks},
login_flag = #{loginFlag},
photo = #{photo},
qrcode = #{qrCode},
school = #{school.id}
WHERE id = #{id}
</update>
<!-- 物理刪除用戶(hù) -->
<update id="delete">
DELETE FROM sys_user 
WHERE id = #{id}
</update>
<!-- 邏輯刪除用戶(hù) -->
<update id="deleteByLogic">
UPDATE sys_user SET 
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
</update>
</mapper>

相關(guān)文章

  • Jexcel實(shí)現(xiàn)按一定規(guī)則分割excel文件的方法

    Jexcel實(shí)現(xiàn)按一定規(guī)則分割excel文件的方法

    這篇文章主要介紹了Jexcel實(shí)現(xiàn)按一定規(guī)則分割excel文件的方法,涉及java操作Excel文件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Java 并發(fā)編程的可見(jiàn)性、有序性和原子性

    Java 并發(fā)編程的可見(jiàn)性、有序性和原子性

    這篇文章主要介紹了Java 并發(fā)編程的可見(jiàn)性、有序性和原子性的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java并發(fā)編程,感興趣的朋友可以了解下。
    2020-11-11
  • 探討Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔

    探討Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔

    這篇文章主要介紹了Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔,本文通過(guò)分步指南及代碼示例展示了如何將 Markdown 文件轉(zhuǎn)換為 Word 文檔和 PDF 文件,需要的朋友可以參考下
    2024-07-07
  • 深入理解Java并發(fā)編程之LinkedBlockingQueue隊(duì)列

    深入理解Java并發(fā)編程之LinkedBlockingQueue隊(duì)列

    本文主要介紹了Java并發(fā)編程之LinkedBlockingQueue隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • JAVA異常信息Exception?e及e的相關(guān)方法解讀

    JAVA異常信息Exception?e及e的相關(guān)方法解讀

    這篇文章主要介紹了JAVA異常信息Exception?e及e的相關(guān)方法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java異常處理機(jī)制深入理解

    Java異常處理機(jī)制深入理解

    如果某個(gè)方法不能按照正常的途徑完成任務(wù),就可以通過(guò)另一種路徑退出方法。在這種情況下會(huì)拋出一個(gè)封裝了錯(cuò)誤信息的對(duì)象。此時(shí),這個(gè)方法會(huì)立刻退出同時(shí)不返回任何值。另外,調(diào)用這個(gè)方法的其他代碼也無(wú)法繼續(xù)執(zhí)行,異常處理機(jī)制會(huì)將代碼執(zhí)行交給異常處理器
    2022-01-01
  • spring cloud實(shí)現(xiàn)Eureka注冊(cè)中心的HA的方法

    spring cloud實(shí)現(xiàn)Eureka注冊(cè)中心的HA的方法

    本篇文章主要介紹了spring cloud實(shí)現(xiàn)Eureka注冊(cè)中心的HA的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 親測(cè)SpringBoot參數(shù)傳遞及@RequestBody注解---踩過(guò)的坑及解決

    親測(cè)SpringBoot參數(shù)傳遞及@RequestBody注解---踩過(guò)的坑及解決

    這篇文章主要介紹了親測(cè)SpringBoot參數(shù)傳遞及@RequestBody注解---踩過(guò)的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java多線(xiàn)程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java多線(xiàn)程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java的synchronized關(guān)鍵字用于修飾線(xiàn)程同步,用以線(xiàn)程資源共享的目的等,下面就帶來(lái)簡(jiǎn)單的Java多線(xiàn)程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解
    2016-06-06
  • Json在Struts中的轉(zhuǎn)換與傳遞方法

    Json在Struts中的轉(zhuǎn)換與傳遞方法

    下面小編就為大家?guī)?lái)一篇Json在Struts中的轉(zhuǎn)換與傳遞方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11

最新評(píng)論

滨海县| 江阴市| 丹棱县| 肥西县| 阿瓦提县| 兴业县| 鄢陵县| 新乐市| 绥芬河市| 庆阳市| 延边| 莎车县| 泾川县| 临汾市| 都昌县| 垫江县| 江油市| 济源市| 潢川县| 巴林左旗| 绍兴市| 奉新县| 东莞市| 佛坪县| 巴中市| 德化县| 青岛市| 和龙市| 泰兴市| 城固县| 离岛区| 石屏县| 慈利县| 时尚| 台湾省| 耒阳市| 汾阳市| 广宁县| 呼图壁县| 扬中市| 伊吾县|