【Mybatis】 mapper XML 文件中使用 association 实现一对一关联
生活随笔
收集整理的這篇文章主要介紹了
【Mybatis】 mapper XML 文件中使用 association 实现一对一关联
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
- Mybatis 一對一,使用 association 標簽
- Mybatis 一對多,使用 collection 標簽
- 本文主要說明 association 標簽。 collection 標簽與之類似,參考這里。
- association 標簽有兩種用法:join查詢、嵌套查詢
- 文中代碼是從項目中Copy后再修改得到的,如果有對不上的地方,需要自動糾錯。
假設,有下面這個實體類:
public class Car {/** 車輛編號 */private Long carid;/** 公司編號 */private Long comid;/** 車牌號 */private String carnum;/** 公司 */private Company company;... }association 的 join查詢用法
略。
association 的嵌套查詢用法
<?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.office.leasing.mapper.CarMapper"><resultMap type="Car" id="CarResult"><result property="carid" column="carid" /><result property="comid" column="comid" /><result property="carnum" column="carnum" /><result property="carbrand" column="carbrand" /><result property="carcolor" column="carcolor" /><result property="cartype" column="cartype" /><result property="remark" column="remark" /><result property="status" column="status" /><association property="company" javaType="Company" column="comid" select="selectCompany" /></resultMap><resultMap type="Company" id="CompanyResult"><result property="leaid" column="leaid" /><result property="leaname" column="leaname" /><result property="address" column="address" /><result property="telnumber" column="telnumber" /><result property="contacts" column="contacts" /><result property="createTime" column="create_time" /><result property="status" column="status" /></resultMap><select id="selectCarListCustom" parameterType="Car" resultMap="CarResult">select * from car<where> <if test="carnum != null and carnum != ''"> and carnum = #{carnum}</if></where></select><select id="selectCompany" parameterType="Integer" resultMap="CompanyResult">select * from company where comid=#{comid}</select> </mapper>- <association ... column="comid" ... /> 中 comid 是數據庫中 car 表的 comid 列的列名。
- <select id="selectCompany" ...>... comid=#{comid}... 中 #{comid} 的值對應數據庫中car表的comid列。
- <select id="selectCompany" ...>... comid=#{comid}... 中 #{comid} 的變量名comid可以隨便叫。比如可以用#{abc}替代#{comid}。因為parameterType="Integer",所以叫啥都無所謂了。
- 也可以這樣寫 <association ... column="{id=comid}" ... /> 。id 是自定義的變量名,想叫啥叫啥。comid 是數據庫中 car 表的 comid 列的列名。
遇到復合主鍵是怎么辦?
<mapper namespace="..."><resultMap type="XX" id="XXMap"><id property="id" column="colid"/> <id property="name" column="colname"/> <collection property="list" javaType="ArrayList" column="{id = colid,name=colname}" select="getSubXXX"/> </resultMap><select id="getSubXXX" parameterType="map" resultMap="xxx">select * from xxx where xxx_id=#{id} and xxx_name=#{name}</select> </mapper>- column="{id = colid,name=colname}" id+name為符合主鍵
- id、name為別名/變量名
- colid、colname為數據庫中表的列名
- 在getSubXXX中,直接使用別名/變量名即可,比如:#{id}。
錯誤:元素類型為 “resultMap“ 的內容必須匹配 “(constructor?,id*,result*,association*,collection*,discriminator?)”
參考這里。
參考
https://mybatis.org/mybatis-3/sqlmap-xml.html
https://mybatis.org/mybatis-3/zh/sqlmap-xml.html
https://www.cnblogs.com/duanxz/p/3830509.html
https://www.cnblogs.com/YingYue/p/3912648.html
總結
以上是生活随笔為你收集整理的【Mybatis】 mapper XML 文件中使用 association 实现一对一关联的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 树表查询所有子节点
- 下一篇: 还用鼠标在Excel里拖来拖去,太笨了!