日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

07.MyBatis中的关联查询

發布時間:2024/7/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 07.MyBatis中的关联查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關聯查詢:

一對一:

兩種方式實現:

1.通過業務擴展的方式進行一對一查詢,新建一個實體類,繼承其中屬性多的一個,然后寫上另一個類中的屬性:

實體類:

?

?映射文件:

1 <!-- 業務擴展的方式進行一對一查詢,創建一個新的實體類繼承屬性多的一方然后重寫屬性少的一方 --> 2 <select id="queryStudentWithOO" parameterType="int" resultType="StudentBusiness"> 3 select * from student s inner join studentcard c on s.sid = c.cid and sid = #{sid} 4 </select>

測試類:

1 //一對一查尋 2 public static void queryStudentWithOO() throws IOException { 3 //讀取配置文件 4 Reader reader = Resources.getResourceAsReader("conf.xml"); 5 //創建sqlSessionFactory 6 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 7 //獲取session 8 SqlSession session = sessionFactory.openSession(); 9 //定位映射文件 10 studentMapper studentMapper = session.getMapper(studentMapper.class); 11 //定位sql語句并執行 12 StudentBusiness studentBusiness = studentMapper.queryStudentWithOO(3); 13 //提交事務 14 session.commit(); 15 System.out.println(studentBusiness); 16 //關閉連接 17 session.close(); 18 }

2.通過ResultMap的方式實現一對一

然后在映射文件中使用association進行對象屬性的映射:

實體類:

配置文件:

1 <select id="queryStudentWithMap" parameterType="int" resultMap="StudentBusiness1"> 2 select * from student s inner join studentcard c on s.sid = c.cid and sid = #{sid} 3 </select> 4 <resultMap type="StudentBusiness" id="StudentBusiness1"> 5 <id property="sid" column="sid"/> 6 <result property="sname" column="sname"/> 7 <result property="age" column="age"/> 8 <result property="sex" column="sex"/> 9 <result property="cid" column="cid"/> 10 <result property="stuInfo" column="stuInfo"/> 11 <association property="address" javaType="Address"> 12 <result property="homeAddress" column="homeaddress"/> 13 <result property="schoolAddress" column="schooladdress"/> 14 </association> 15 </resultMap>

測試類:

1 //一對一查尋,使用ResultMap的方式 2 public static void queryStudentWithMap() throws IOException { 3 //讀取配置文件 4 Reader reader = Resources.getResourceAsReader("conf.xml"); 5 //創建sqlSessionFactory 6 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 7 //獲取session 8 SqlSession session = sessionFactory.openSession(); 9 //定位映射文件 10 studentMapper studentMapper = session.getMapper(studentMapper.class); 11 //定位sql語句并執行 12 StudentBusiness studentBusiness = studentMapper.queryStudentWithMap(3); 13 //提交事務 14 session.commit(); 15 System.out.println(studentBusiness); 16 //關閉連接 17 session.close(); 18 }

2.一對多:

一個班級對應多個學生,應在班級的實體類中定義一個學生的屬性,然后在映射文件中使用collection進行對象屬性集合進行映射:

實體類:

?

配置文件:

1 <!-- 一對多查詢 --> 2 <select id="queryStudentWithOM" parameterType="int" resultMap="Studentclass1"> 3 select * from student s inner join studentclass c on s.cno = c.cno and c.cno = #{cno} 4 </select> 5 6 <resultMap type="StudentClass" id="Studentclass1"> 7 <id property="cno" column="cno"/> 8 <result property="cname" column="cname"/> 9 <!-- 循環集合用collection,屬性值寫集合屬性名,類型寫集合中的元素的類型并且使用的是ofType --> 10 <collection property="students" ofType="student"> 11 <result property="sname" column="sname"/> 12 <result property="age" column="age"/> 13 <result property="sex" column="sex"/> 14 </collection> 15 </resultMap>

測試類:

1 //一對多查尋 2 public static void queryStudentWithOM() throws IOException { 3 //讀取配置文件 4 Reader reader = Resources.getResourceAsReader("conf.xml"); 5 //創建sqlSessionFactory 6 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 7 //獲取session 8 SqlSession session = sessionFactory.openSession(); 9 //定位映射文件 10 studentMapper studentMapper = session.getMapper(studentMapper.class); 11 //定位sql語句并執行 12 StudentClass studentClass = studentMapper.queryStudentWithOM(2); 13 System.out.println(studentClass); 14 //提交事務 15 session.commit(); 16 List<Student> students = studentClass.getStudents(); 17 for (Student student : students) { 18 System.out.print(studentClass.getCno() + "," + studentClass.getCname() + ","); 19 System.out.println(student.getSname()+"," +student.getAge()+"," +student.getSex()); 20 } 21 //關閉連接 22 session.close(); 23 }

?

轉載于:https://www.cnblogs.com/man-tou/p/11345703.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的07.MyBatis中的关联查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。