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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Mybatis—多表查询

發布時間:2023/11/29 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mybatis—多表查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mybatis多表查詢

一對一查詢

一對一查詢的模型MapperScannerConfigurer

用戶表和訂單表的關系為,一個用戶有多個訂單,一個訂單只從屬于一個用戶

創建Order和User實體
public class Order {private int id;private Date ordertime;private double total;//代表當前訂單從屬于哪一個客戶private User user; }public class User {private int id;private String username;private String password;private Date birthday;}
創建接口
public interface OrderMapper {List<Order> findAll(); }
配置OrderMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.controller.OrderMapper"> <resultMap id="orderMap" type="com.model.Order"><result column="id" property="id" /><result column="ordertime" property="ordertime"/><result column="total" property="total"/><association property="user" javaType="com.model.User"><result column="uid" property="id"/><result column="username" property="username"/><result column="password" property="password"/><result column="birthday" property="birthday"/></association> </resultMap><select id="findAll" resultMap="orderMap">select * from orders o,user u where o.uid=u.id</select> </mapper>
測試結果
@Testpublic void tset4() {InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = sqlSessionFactory.openSession(true);OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);List<Order> all = mapper.findAll();System.out.println(all);}

一對多查詢

一對多查詢的模型

用戶表和訂單表的關系為,一個用戶有多個訂單,一個訂單只從屬于一個用戶

一對多查詢的需求:查詢一個用戶,與此同時查詢出該用戶具有的訂單

1.2.3 修改User實體
public class Order {private int id;private Date ordertime;private double total;//代表當前訂單從屬于哪一個客戶private User user; }public class User {private int id;private String username;private String password;private Date birthday;//代表當前用戶具備哪些訂單private List<Order> orderList; }
創建UserMapper接口
public interface UserMapper {List<User> findAll(); }
配置UserMapper.xml
<resultMap id="userMap" type="com.model.User"><result column="username" property="username" /><result column="password" property="password"/><result column="id" property="id"/><result column="birthday" property="birthday"/><collection property="orderList" ofType="com.model.Order"><result property="id" column="oid"/><result property="ordertime" column="ordertime"/><result property="total" column="total"/></collection></resultMap><select id="findAll" resultMap="userMap">select * ,o.id oid from user u left join orders o on u.id=o.uid</select>
測試結果
@Testpublic void tset4() {InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = sqlSessionFactory.openSession(true);userMapper mapper = sqlSession.getMapper(userMapper.class);List<User> all = mapper.findAll();System.out.println(all);}

多對多查詢

多對多查詢的模型

用戶表和角色表的關系為,一個用戶有多個角色,一個角色被多個用戶使用

多對多查詢的需求:查詢用戶同時查詢出該用戶的所有角色

創建Role實體,修改User實體
public class User {private int id;private String username;private String password;private Date birthday;//代表當前用戶具備哪些訂單private List<Order> orderList;//代表當前用戶具備哪些角色private List<Role> roleList; }public class Role {private int id;private String rolename;}
添加UserMapper接口方法
List<User> findAllUserAndRole();
配置UserMapper.xml
<resultMap id="roleMap" type="com.model.User"><result column="username" property="username" /><result column="password" property="password"/><result column="id" property="id"/><result column="birthday" property="birthday"/><collection property="roleList" ofType="com.model.Role"><result property="id" column="rid"/><result property="rolename" column="rolename"/></collection></resultMap><select id="findAllUserAndRole" resultMap="roleMap">select u.*,r.id rid,r.* from user u left join sys_user_role ur on u.id=ur.userid inner join sys_role r on r.id=ur.roleid</select>
測試結果
@Testpublic void tset4() {InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = sqlSessionFactory.openSession(true);userMapper mapper = sqlSession.getMapper(userMapper.class);List<User> all = mapper.findAllUserAndRole();System.out.println(all);}

總結

以上是生活随笔為你收集整理的Mybatis—多表查询的全部內容,希望文章能夠幫你解決所遇到的問題。

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