欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MybatisPlus實現(xiàn)對象嵌套關聯(lián)查詢一對多List集合查詢

 更新時間:2022年05月21日 12:03:57   作者:weixin_52366309  
這篇文章主要介紹了MybatisPlus實現(xiàn)對象嵌套關聯(lián)查詢一對多List集合查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

對象嵌套關聯(lián)查詢一對多List集合查詢

mybatis嵌套關聯(lián)查詢?nèi)缦?/h3>

由于我的是一對集合查詢,所以我有兩個類。

@Data
@TableName("tb_user")
public class User {
? ? @TableId(type= IdType.INPUT)
? ? private String id;
? ? @TableField("user_name")
? ? private String username;
? ? private String password;
? ? private String name;
? ? private String email;
? ? private int age;
? ? private ArrayList<Authority> list;
}

權限類

@Data
@TableName
public class Authority {
? ? @TableId(type = IdType.INPUT)
? ? @TableField("aid")
? ? private int id;
? ? @TableId("aname")
? ? private String name;
}

測試類

?@Test
? ? public void ManyToMany(){
? ? ? ? User user = userMapper.selectAuthorityById(1);
? ? ? ? ArrayList <Authority> list = user.getList();
? ? ? ? System.out.println(user);
? ? ? ? for (Authority authority : list) {
? ? ? ? ? ? System.out.println("所對應權限為"+authority.getName());
? ? ? ? }
? ? }

springboot項目的依賴

? ? ? ?<dependency>
? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? <artifactId>spring-boot-starter</artifactId>
? ? </dependency>
? ? ? ? <dependency>
? ? ? ? <groupId>mysql</groupId>
? ? ? ? <artifactId>mysql-connector-java</artifactId>
? ? ? ? <version>5.1.26</version>
? ? </dependency>
? ? ? ? <dependency>
? ? ? ? <groupId>org.projectlombok</groupId>
? ? ? ? <artifactId>lombok</artifactId>
? ? ? ? <optional>true</optional>
? ? </dependency>
? ? ? ? <dependency>
? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? <artifactId>spring-boot-starter-test</artifactId>
? ? ? ? <scope>test</scope>
? ? </dependency>
? ? ? ?<!--mybatis plus 起步依賴-->
? ? ? ? <dependency>
? ? ? ? <groupId>com.baomidou</groupId>
? ? ? ? <artifactId>mybatis-plus-boot-starter</artifactId>
? ? ? ? <version>3.4.0</version>
? ? </dependency>

這下面就是我xml文件里面怎么寫的嵌套查詢語句

<mapper namespace="com.itheima.mybatisplus.mapper.UserMapper">
? ? <!--返回的對象為authority-->
? ? <resultMap id="authority" type="com.itheima.mybatisplus.domain.User">
? ? ? ? <id column="id" property="id"/>
? ? ? ? <id column="password" property="password"/>
? ? ? ? <id column="age" property="age"/>
? ? ? ? <id column="email" property="email"/>
? ? ? ? <id column="name" property="name"/>
? ? ? ? <id column="user_name" property="username"/>
? ? ? <collection property="list"
? ? ? ? ? ? ? ? ? ofType="com.itheima.mybatisplus.domain.Authority">
? ? ? ? ? <id property="id" column="aid"/>
? ? ? ? ? <id property="name" column="aname"/>
? ? ? </collection>
?? ?<select id="selectAuthorityById" parameterType="int" resultMap="authority">
? ? ? ?SELECT * FROM
? ? ? ? ?authority a,tb_user t,user_authority ua
? ? ? ? ?WHERE a.aid=ua.authority_id
? ? ? ? ?AND t.id=ua.user_id
? ? ? ? ?AND t.id=#{id}
? ? </select>

數(shù)據(jù)庫的配置我就不放了,直接編寫就可以了,看會下面這個xml配置就可以了 

一對多查詢(經(jīng)典案例)

條件

查詢班級表 返回所有學生信息  (一對多問題)

數(shù)據(jù)庫

班級class_info

學生student

代碼實現(xiàn)

<!--        多對一  或者 一對一   -->
<!--        <association property=""-->
<!--        一對多 返回集合-->
<!- -  <collection  property=""- ->

實體類ClassInfo.java

@Data
public class ClassInfo {
 
    private Long id;
    private String name;
    private String nameTest; 
    private List<Student> studentList;
}

ClassInfoMapper.xml

<?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層某個接口的包的全名稱-->
<mapper namespace="com.example.demo.mapper.ClassInfoMapper">
 
    <!--    查詢班級 返回所有學生的信息   一對多-->
 
    <!--    自定義映射規(guī)則-->
    <resultMap id="OneToMany" type="com.qcby.zsgc.entity.ClassInfo">
        <result column="name" jdbcType="VARCHAR" property="nameTest" />
        <collection  column="{id1=id,name=name}"
                     property="studentList"
                     select="com.example.demo.mapper.StudentMapper.listByClassInfoId">                 </collection>
    </resultMap>
 
    <select id="listAllWithStudent" resultMap="OneToMany">
        select * from class_info
    </select>

關聯(lián)StudentMapper.xml中的子查詢

 <select id="listByClassInfoId" resultType="com.example.demo.entity.Student">
        SELECT
           *
        FROM
            student s
        where class_info_id = #{id1} or name = #{name}
    </select>

ClassInfoMapper.java

public interface ClassInfoMapper extends BaseMapper<ClassInfo> {??
? ? IPage<ClassInfo> listAllWithStudent(IPage<ClassInfo> page);?
}

ClassInfoService.java

public interface ClassInfoService extends IService<ClassInfo> {?
? ? IPage<ClassInfo> listAllWithStudent(IPage<ClassInfo> page);?
}

ClassInfoServiceImpl.java

@Service
public class ClassInfoServiceImpl extends ServiceImpl<ClassInfoMapper, ClassInfo> implements ClassInfoService {
? ? @Autowired
? ? private StudentService studentService;
? ? @Override
? ? public IPage<ClassInfo> listAllWithStudent(IPage<ClassInfo> page) {
? ? ? ? return this.baseMapper.listAllWithStudent(page);
? ? }
}

ClassInfoController.java

@Controller
@RequestMapping("classInfo")
public class ClassInfoController {
?
? ? @Autowired
? ? private ClassInfoService classInfoService;
?
? ? @RequestMapping("listAllWithStudent")
? ? @ResponseBody
? ? public IPage<ClassInfo> listAllWithStudent(Integer pageNo,Integer pageSize){
? ? ? ? Page<ClassInfo> page = new Page<>(pageNo,pageSize);
? ? ? ? return classInfoService.listAllWithStudent(page);
? ? }?
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java用LocalDateTime類獲取當天時間、前一天時間及本周/本月的開始和結束時間

    java用LocalDateTime類獲取當天時間、前一天時間及本周/本月的開始和結束時間

    這篇文章主要給大家介紹了關于java使用LocalDateTime類獲取當天時間、前一天時間及本周/本月的開始和結束時間的相關資料,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • Spring整合JUnit詳解

    Spring整合JUnit詳解

    Spring?是目前主流的?Java?Web?開發(fā)框架,是?Java?世界最為成功的框架。該框架是一個輕量級的開源框架,這篇文章主要介紹如何配置數(shù)據(jù)源、注解開發(fā)以及整合Junit,感興趣的同學可以參考一下
    2023-04-04
  • 詳解Java拋出和聲明異常的代碼實現(xiàn)

    詳解Java拋出和聲明異常的代碼實現(xiàn)

    我們在編寫代碼時,有時候因為某些原因,并不想在這個方法中立即處理產(chǎn)生的異常,也就是說并不想進行異常的捕獲,接下來小編就來教會大家該如何進行異常的拋出,需要的朋友可以參考下
    2023-08-08
  • Java?ConcurrentHashMap的源碼分析詳解

    Java?ConcurrentHashMap的源碼分析詳解

    ConcurrentHashMap(CHM)是日常開發(fā)中使用頻率非常高的一種數(shù)據(jù)結構,想對于普通的HashMap,CHM提供了線程安全的讀寫,CHM里面使用了許多比較精妙的優(yōu)化&操作。本文主要對CHM的整體結構、初始化,查找,插入等做分析
    2023-03-03
  • Springboot+MyBatis進行日志輸出參考示例

    Springboot+MyBatis進行日志輸出參考示例

    這篇文章主要給大家介紹了關于Springboot+MyBatis進行日志輸出的相關資料,在項目開發(fā)過程中,日志是必不可少的,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • Java實現(xiàn)獲取圖片和視頻文件的Exif信息

    Java實現(xiàn)獲取圖片和視頻文件的Exif信息

    這篇文章將重點為大家介紹一下如何使用Java編程語言結合metadata-extractor去自動獲取全景圖片的Exif信息,獲取照片的拍攝坐標信息,感興趣的可以了解一下
    2022-11-11
  • 淺析JDK和Tomcat的安裝與配置方法

    淺析JDK和Tomcat的安裝與配置方法

    這篇文章主要介紹了JDK和Tomcat的安裝與配置方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-12-12
  • 關于Guava緩存詳解及使用說明

    關于Guava緩存詳解及使用說明

    這篇文章主要介紹了關于Guava緩存詳解及使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • javaweb實現(xiàn)簡易郵件發(fā)送

    javaweb實現(xiàn)簡易郵件發(fā)送

    這篇文章主要為大家詳細介紹了javaweb實現(xiàn)簡易郵件發(fā)送,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解Spring中Bean后置處理器(BeanPostProcessor)的使用

    詳解Spring中Bean后置處理器(BeanPostProcessor)的使用

    BeanPostProcessor 接口也被稱為Bean后置處理器,通過該接口可以自定義調(diào)用初始化前后執(zhí)行的操作方法。本文將詳細講講它的使用,需要的可以參考一下
    2022-06-06

最新評論