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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

一对一,一对多,多对多查询 (注解写法)

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一对一,一对多,多对多查询 (注解写法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 1、實體
    • 2、一對一
    • 3、一對多
    • 4、多對多
    • 5、測試

核心: 一對一,注解:@Select @Results @Result @One 一對多 & 多對多,@One改為@Many共同的操作:查詢多表時,先查一個表, 把這個實體屬性作為查詢條件。 然后引用用接口中的方法,查詢。

從用戶,訂單之間說一對一,和多對一的關系
從用戶,用戶角色,以及兩者關系的表,來說多對多

^_^ 多表操作查詢 一對一
😀一對多,多對多查詢

1、實體

/*** 用戶訂單表 一對一* 一個訂單對應一個用戶...* @author echo lovely* @date 2020/9/13 10:26*/ public class Order {private Integer orderId;private Timestamp orderTime;private Double orderMoney;// 當前訂單對應的用戶..private User user; } /*** 多對多關系測試* @author echo lovely* @date 2020/9/13 16:38*/ public class Role {private Integer roleId;private String roleName;} /*** @author echo lovely* @date 2020/9/11 20:55*/ public class User {private Integer userId;private String userName;private String userPassword;// 一對多 每個用戶 有多個訂單private List<Order> orderList;// 新增角色表 每個用戶有多個角色,每個角色可能對應多個用戶private List<Role> roleList;}

2、一對一

查詢訂單對應的用戶

package cn.bitqian.dao;import cn.bitqian.entity.Order; import cn.bitqian.entity.User; import org.apache.ibatis.annotations.One; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select;import java.util.List;/*** 注解 一對一模型*/ public interface OrderMapper {/*@Select("select * from orders, users1 where orders.order_id = users1.userid")@Results({@Result(id = true, property = "orderId", column="order_id"),@Result(property = "orderName", column = "order_name"),@Result(property = "orderMoney", column = "order_money"),@Result(property = "user.userId", column = "userid"),@Result(property = "user.userName", column = "username"),@Result(property = "user.orderPassword", column = "orderpassword")})public List<Order> queryOrder();*/@Select("select * from orders")@Results({@Result(id = true, property = "orderId", column="order_id"),@Result(property = "orderName", column = "order_name"),@Result(property = "orderMoney", column = "order_money"),@Result(property = "user", // 要封裝的屬性名稱column = "order_id", // 根據哪個字段查詢user表的數據javaType = User.class, // 要封裝的實體類型// select 代表查詢對應接口 獲得數據one = @One(select="cn.bitqian.dao.UserMapper.queryOneUser"))})List<Order> queryOrder();// 根據uid 查詢對應的order@Select("select * from orders where uid = #{uid}")@Results({@Result(id = true, property = "orderId", column = "order_id"),@Result(property = "orderName", column = "order_name"),@Result(property = "orderMoney", column = "order_money")})Order queryOneOrder(int uid);}

3、一對多

查詢用戶對應的訂單

package cn.bitqian.dao;import cn.bitqian.entity.User; import org.apache.ibatis.annotations.*;import java.util.List;public interface UserMapper {@Select("select * from users1")@Results({@Result(property = "userId", column = "userid"),@Result(property = "userName", column = "username"),@Result(property = "userPassword", column="userpassword"),@Result(property = "orderList", // 封裝的屬性名稱為orderListcolumn = "userId",javaType = List.class,// mapper接口中 方法many = @Many(select = "cn.bitqian.dao.OrderMapper.queryOneOrder") // 在OrderMapper里面)})List<User> queryUserAndOrder();// 一對多 (一個用戶多個訂單)}

4、多對多

查詢用戶和角色

package cn.bitqian.dao;import cn.bitqian.entity.User; import org.apache.ibatis.annotations.*;import java.util.List;public interface UserMapper {// 用戶 & 角色@Select("select * from users1")@Results({@Result(id = true, property = "userId", column = "userId"),@Result(property = "userName", column = "userName"),@Result(property = "userPassword", column = "userPassword"),@Result(property = "roleList", // 要封裝的實體屬性名稱column = "userId",// 根據user id查詢role表的數據javaType = List.class, // 要封裝的實體類型many = @Many(select = "cn.bitqian.dao.RoleMapper.queryRoleByUserId"))// 查詢對應的接口 獲取數據})List<User> queryUserAndRole();}

角色接口

package cn.bitqian.dao;import cn.bitqian.entity.Role; import org.apache.ibatis.annotations.*;import java.util.List;// 角色 & 用戶 & 角色關系 public interface RoleMapper {@Select(value = "SELECT r.* FROM user_role ur, role r " +"WHERE ur.role_id = r.role_id " +"AND user_id = #{userId}")@Results({@Result(property = "roleId", column = "role_id"),@Result(property = "roleName", column = "role_name")})List<Role> queryRoleByUserId(int userId);}

5、測試

import cn.bitqian.dao.OrderMapper; import cn.bitqian.dao.UserMapper; import cn.bitqian.entity.Order; import cn.bitqian.entity.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;import java.io.IOException; import java.io.InputStream; import java.util.List;/*** @author echo lovely* @date 2020/9/13 21:14*/ public class MybatisAnnotationTest {private SqlSession sqlSession;private UserMapper userMapper;@Beforepublic void initSqlSession() {try {InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);sqlSession = sqlSessionFactory.openSession(true);userMapper = sqlSession.getMapper(UserMapper.class);} catch (IOException e) {e.printStackTrace();}}// 一對一測試 注解@Testpublic void oneToOneTest() {OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);List<Order> orderList = orderMapper.queryOrder();for (Order order : orderList) {System.out.println(order);}}// 一對多測試@Testpublic void oneToManyTest() {List<User> userList = userMapper.queryUserAndOrder();for (User user : userList) {System.out.println(user);}}// 多對多測試@Testpublic void manyToMany() {List<User> userAndRoleList = userMapper.queryUserAndRole();for (User userAndRole : userAndRoleList) {System.out.println(userAndRole);}}@Afterpublic void destroySqlSession() {if (sqlSession != null) {sqlSession.close();System.out.println("close session...");}}}

總結

以上是生活随笔為你收集整理的一对一,一对多,多对多查询 (注解写法)的全部內容,希望文章能夠幫你解決所遇到的問題。

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