三表聯查
1.使用者表(一對多 --------->中間表)
2.請假型別表(一對一 ---------------->中間表)
3.中間表
中間表 mid------>使用者表id
中間表 type------>請假型別表(的)id
一對多用collection
一對一用assocation
重點
oftype 在此標籤中有 collection
javaType 在此標籤中有 assocation
<mapper namespace="com.enjoylearning.mybatis.mapper.TMianMapper">
<resultMap id="BaseResultMap" type="TMian">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
<collection property="tmianzhongjian" ofType="java.util.HashMap" >
<result column="id" property="id" jdbcType="INTEGER" />
<result column="type" property="type" jdbcType="INTEGER" />
<result column="daytime" property="daytime" jdbcType="INTEGER" />
<result column="mid" property="mid" jdbcType="INTEGER" />
<association property="tmianjia" javaType="com.enjoylearning.mybatis.entity.TMianJia">
<id column="id" property="id"></id>
<id column="tname" property="tname"></id>
</association>
</collection>
</resultMap>
<select id="heheda1" resultMap="BaseResultMap">
SELECT a.*,b.*,c.* FROM t_mian_jia a,t_mian_zhong_jian b,t_mian c
WHERE b.type=a.id AND b.mid = c.id;
</select>
</mapper>
public class MybatisDemo {
private SqlSessionFactory sqlSessionFactory;
@Before
public void init() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 1.讀取mybatis配置檔案創SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
inputStream.close();
}
@Test
public void testSelectUserById(){
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
//這個例子的XML和介面都定義在UserMapper中
TMianMapper userMapper = sqlSession.getMapper(TMianMapper.class);
List<TMian> tuser = userMapper.heheda1();
for(int i = 0;i<tuser.size();i++){
tuser.get(i).getId();
}
} finally {
sqlSession.close();
}
}
}
使用者表的例項(一條此表對應多條中間表資料)因此List
public class TMian {
private int id;
private String name;
private String email;
private List<TMianZhongJian> tmianzhongjian;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public class TMianJia {
private int id;
private String tname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
}
中間表的例項(此表中的一條資料對應一條請假型別表中的資料)因此是TMianJia tmianjia
public class TMianZhongJian {
private int id;
private int type;
private int daytime;
private int mid;
private TMianJia tmianjia;
public TMianJia getTmianjia() {
return tmianjia;
}
public void setTmianjia(TMianJia tmianjia) {
this.tmianjia = tmianjia;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getDaytime() {
return daytime;
}
public void setDaytime(int daytime) {
this.daytime = daytime;
}
public int getMid() {
return mid;
}
public void setMid(int mid) {
this.mid = mid;
}
}
個人建議碰見多表聯查時候
每兩兩表的關係是相對
1.如使用者表一條資料對應多條中間表資料, 一條表中間表的資料對應一條請假詳情表,這是一個完整的思路(以使用者為主)
2.反過來思考,一條中間表資料對應一條數使用者表資料,一條中間表對應一條詳情表資料,這也是一個完整的思路。(以中間表為主)當然對應關係就不能以上面的程式碼了。
文章屬於自己總結的 程式碼並沒有按規範來 希望大家理解見諒(當然也是個人面試碰見的 )
附上演示效果
相關文章
- MySQL三表聯查及兩表聯查MySql
- SQL 三表聯合查詢SQL
- mysql 三表關聯查詢MySql
- mysql三表關聯查詢MySql
- mysql三張表關聯查詢MySql
- mysql三表關聯查詢練習MySql
- mysql三表聯合查詢(員工表,部門表,工資表)MySql
- Mongodb 關聯表查詢MongoDB
- Spring JPA 聯表查詢Spring
- 按月分表聯合查詢
- mysql-三表關聯MySql
- 完爆Facebook/GraphQL,APIJSON全方位對比解析(三)-表關聯查詢APIJSON
- 兩表關聯查詢:sql、mybatisSQLMyBatis
- springDataJpa聯表查詢之多對多Spring
- 20、聯表查詢JoinON詳解
- django 兩個表或多個表聯合查詢Django
- Spring Data JPA 實現聯表查詢Spring
- MYSQL A、B表陣列關聯查詢MySql陣列
- flink維表關聯絡列之Redis維表關聯:實時查詢Redis
- spring data jpa 多對一聯表查詢Spring
- SQL面試題 三(單表、多表查詢)SQL面試題
- sql 連線查詢例項(left join)三表連線查詢SQL
- MySQL--操作簡記(聯結表,組合查詢(UNION))MySql
- web 端展現報表時查詢表單如何實現引數聯動Web
- mysql三表連線查詢以及百分數排序MySql排序
- Oracle 級聯表更新和SQLServer 級聯表更新OracleSQLServer
- 區分關聯子查詢和非關聯子查詢
- 單表查詢
- 關聯表更新
- 短影片app程式碼,如何實現聯表資料查詢和刪除?APP
- 三級聯動
- OpenCV翻譯專案總結三——對OpenCV效能、查詢表等分析OpenCV
- JPA多表關聯查詢
- mysql鎖表查詢MySql
- 查詢 - 符號表符號
- MySQL 單表查詢MySql
- MySQL單表查詢MySql
- mysql四表連查MySql