MyBatis使用select关联 一对多表的时候?????????????

问题描述

MyBatis使用select关联 一对多表的时候?????????????
SchoolMapper.xml 关联关系是一个学校里面有很多学生

student 表的属性如下:

school表如下:

school.xml如下:

public class School {

//建立一对多的关系private List<Student> slist;public List<Student> getSlist() {    return slist;}public void setSlist(List<Student> slist) {    this.slist = slist;}private Integer sId;private String sName;private String sAddress;public Integer getsId() {    return sId;}public void setsId(Integer sId) {    this.sId = sId;}public String getsName() {    return sName;}public void setsName(String sName) {    this.sName = sName == null ? null : sName.trim();}public String getsAddress() {    return sAddress;}public void setsAddress(String sAddress) {    this.sAddress = sAddress == null ? null : sAddress.trim();}

public class Student {
//建立多多对一的关系

private School school;public School getSchool() {    return school;}public void setSchool(School school) {    this.school = school;}private Integer stId;private String stClass;private String stName;private String stDream;private Integer stS;public Integer getStId() {    return stId;}public void setStId(Integer stId) {    this.stId = stId;}public String getStClass() {    return stClass;}public void setStClass(String stClass) {    this.stClass = stClass == null ? null : stClass.trim();}public String getStName() {    return stName;}public void setStName(String stName) {    this.stName = stName == null ? null : stName.trim();}public String getStDream() {    return stDream;}public void setStDream(String stDream) {    this.stDream = stDream == null ? null : stDream.trim();}public Integer getStS() {    return stS;}public void setStS(Integer stS) {    this.stS = stS;}test.java  结果list就是null  public static void main(String[] args) {    // TODO Auto-generated method stub    StuService ss=new StuService();    ss.selectSchool();}public void selectSchool(){      SqlSession ss=null;        try {            ss=sf.openSession();                                                         //selectByPrimaryKey        School sc =ss.selectOne(""com.wuye.dao.SchoolMapper.selectSchool"" 1);        System.out.println(""学校的信息:""+sc.getsId()+"" ""+sc.getsName()+"" ""+sc.getsAddress());    List<Student> lis=sc.getSlist();    for(Student st:lis){        System.out.println(""学生信息学号:""+st.getStId()+""名字:""+st.getStName()+""所在班级: ""+st.getStClass()+""梦想:""+st.getStDream()+""所在学校编号:==""+st.getStS());    }        } catch (Exception e) {        // TODO: handle exception          e.printStackTrace();        }}

解决方案

是这样的啊,定义自己定义resultMap指定类的属性和查询列的映射关系,集合列指定select语句。
你这段代码怎么了,有报错么?

解决方案二:
## # 上面肯写的不清楚:

SchoolMapper.xml 关联关系是一个学校里面有很多学生

 <select id=""selectSchool"" resultMap=""BaseResultMap3""  parameterType=""java.lang.Integer"">

select * from school sc where sc.s_id=#{sIdjdbcType=INTEGER}

</collection> 

select st_id stId st_class stClass st_name stNamest_dream stDream

from student s where s.st_s=#{sIdjdbcType=INTEGER}

StudentMapper.xml<mapper namespace=""com.wuye.dao.StudentMapper"" >
<association property=""school"" column=""st_s"" select=""selectShoolByStu"" ></association>
两个表:!![图片说明](http://img.ask.csdn.net/upload/201604/04/1459759020_969759.png)


public class School {

//建立一对多的关系private List<Student> slist;public List<Student> getSlist() {    return slist;}public void setSlist(List<Student> slist) {    this.slist = slist;}private Integer sId;private String sName;private String sAddress;public Integer getsId() {    return sId;}public void setsId(Integer sId) {    this.sId = sId;}public String getsName() {    return sName;}public void setsName(String sName) {    this.sName = sName == null ? null : sName.trim();}public String getsAddress() {    return sAddress;}public void setsAddress(String sAddress) {    this.sAddress = sAddress == null ? null : sAddress.trim();}

public class Student {
//建立多多对一的关系

private School school;public School getSchool() {    return school;}public void setSchool(School school) {    this.school = school;}private Integer stId;private String stClass;private String stName;private String stDream;private Integer stS;public Integer getStId() {    return stId;}public void setStId(Integer stId) {    this.stId = stId;}public String getStClass() {    return stClass;}public void setStClass(String stClass) {    this.stClass = stClass == null ? null : stClass.trim();}public String getStName() {    return stName;}public void setStName(String stName) {    this.stName = stName == null ? null : stName.trim();}public String getStDream() {    return stDream;}public void setStDream(String stDream) {    this.stDream = stDream == null ? null : stDream.trim();}public Integer getStS() {    return stS;}public void setStS(Integer stS) {    this.stS = stS;}test.java  结果list就是null  public static void main(String[] args) {    // TODO Auto-generated method stub    StuService ss=new StuService();    ss.selectSchool();}public void selectSchool(){      SqlSession ss=null;        try {            ss=sf.openSession();                                                         //selectByPrimaryKey        School sc =ss.selectOne(""com.wuye.dao.SchoolMapper.selectSchool"" 1);        System.out.println(""学校的信息:""+sc.getsId()+"" ""+sc.getsName()+"" ""+sc.getsAddress());    List<Student> lis=sc.getSlist();    for(Student st:lis){        System.out.println(""学生信息学号:""+st.getStId()+""名字:""+st.getStName()+""所在班级: ""+st.getStClass()+""梦想:""+st.getStDream()+""所在学校编号:==""+st.getStS());    }        } catch (Exception e) {        // TODO: handle exception          e.printStackTrace();        }
时间: 2024-08-01 09:17:37

MyBatis使用select关联 一对多表的时候?????????????的相关文章

hibernate-Hibernate 三张表关联 一对多对多 配置

问题描述 Hibernate 三张表关联 一对多对多 配置 当更新classA时,关联多方(classB)能自动更新,单与classB 关联的多方(Class C)却不能自动更新 classC: classB: classA: classA对应的A表主键是B表的外键,ClassB对应的B表主键是C标的外键.现在情况是saveorupdate()A表的时候,B表能自动更新. classA 对应A表 classB :b表 classC: c表 A表的主键Aid 是b表的外键, b表的bid是c表的外

MyBatis:一对多表关系详解:重复表id问题

MyBatis:一对多表关系详解(从案例中解析)

sql-求问大神SQL,如何关联两张表后,将第二张表的数据插入第一张表数据第一行后面(详细内容在图片中)

问题描述 求问大神SQL,如何关联两张表后,将第二张表的数据插入第一张表数据第一行后面(详细内容在图片中) 刚注册,无法悬赏,求答案啊~~~~(>_<)~~~~ 解决方案 以前写的SQLServer和Oracle两张表一一对应的SQLhttp://blog.csdn.net/danielinbiti/article/details/43231879 解决方案二: insert into 表1(订单编号,SKU)select 订单编号,订单退款 from 表2

oracle-sql关联三个表查询的问题

问题描述 sql关联三个表查询的问题 表a和表b 通过两个查询分别得到以下两组数据 1,select e.code e.name from code dname e where e.id=d.id and e.type=""球类"" 2,select e.code e.name from code dname e where e.id=d.id and e.type=""棋类"" code name01 足球02 篮球03 羽

Yii2 ActiveRecord多表关联及多表关联搜索的实现_php实例

Yii的ActiveRecord是与数据库打交道的类,也即MVC中的M(模型层),也是ORM的O(Object). 一个老生常谈的问题.最近通过群里的反馈,觉得很多人还是没有去理解这个问题.今天把这个问题讲明白了,看看yii2 ActiveRecord是怎么个多表关联以及如何去优化这个关联. 场景需求: 假设我们有一张用户表user和一张用户渠道表auth,两张数据表通过user.id和auth.uid进行一对一关联.现需要在user列表展示auth表的来源渠道source,且该渠道可搜索. 首

用SELECT 创建记录和表

select|创建 用SELECT 创建记录和表你也许已经注意到,INSERT 语句与DELETE语句和UPDATE语句有一点不同,它一次只操作一个记录.然而,有一个方法可以使INSERT 语句一次添加多个记录.要作到这一点,你需要把INSERT 语句与SELECT 语句结合起来,象这样: INSERT mytable (first_column,second_column)SELECT another_first,another_secondFROM anothertableWHERE ano

sqlserver-insert into @tab select 会出现锁表么?

问题描述 insert into @tab select 会出现锁表么? @tab是临时表,select后面是查询操作,数据库是sqlserver.整个操作是在一个存储过程里面,今天不知道为什么,一调那个存储过程就锁表了.后来,重新执行了那个存储过程,又没有出现锁表的情况了 解决方案 不应该啊.这边出现锁表的话,先看看是不是事务有没有提交?还有可以吧完整的sql发一下吗?

hibernat一对多表连接添加 例如 使用员工表添加数据

问题描述 hibernat一对多表连接添加 例如 使用员工表添加数据 例如 员工对象中部门属性只有部门名称 没有id 如何添加员工表时 顺便添加一个部门表 所有id均为native生成策略 解决方案 http://blog.csdn.net/wed110/article/details/7844937

默认情况下,不使用of子句表示在select所有的数据表中加锁(转)

Select -forupdate语句是我们经常使用手工加锁语句.通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作.同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍.   借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作.本篇我们就来介绍一下这个子句的用法和功能.   下面是采自Oracle官方文档<SQLLanguage Reference>中关于for update子句的说明:(请双击点开图片查看)