资讯专栏INFORMATION COLUMN

Mybatis - 表关联one-to-many

DevTTL / 738人阅读

摘要:单对一,使用单对多,使用,使用嵌套结果,不是必需的,但是是必需的,使用嵌套查询,是必需的,不是必须的,子查询自定义即可表结构表拥有属性对应表更改,添加属性嵌套结果获取,嵌套查询获取,有属性有属性

one to one - association ; //单对一,使用association one to many -
collection ; //单对多,使用collection

Nested results - column is not necessary ,javaType is necessary !
//使用嵌套结果,column 不是必需的,但是JavaType是必需的;

nested queries - column is necessary ,javaType is not necessary !
//使用嵌套查询,column是必需的,JavaType不是必须的,子查询自定义resultType即可!!

表结构:

t_student 表拥有属性 class_id 对应 t_class表 t_id

【1】更改Classes,添加属性
public class Classes {

    private int id;
    private String name;
    private Teacher teacher;
    private List list;
    ...
}
【2】嵌套结果-获取Classes,Teacher AND list

     
        
        

        
        
            
            
        

        
        
            
            
        
     
    
 
【3】嵌套查询–获取Classes,Teacher AND list
 

        

     

     
        
        

        
        
        

        
        
        
        
     
     
  
【4】Test

获取SqlSessionFactory的工具类:

 public static SqlSessionFactory getFactory(){
            /* flow the src dir*/
            String resource = "mybatis.xml";
            /*MybatisUtils.class.getResourceAsStream(resource)----- it"s wrong !!!!
             * please distinguish the two up and down 
             * */
            InputStream inputStream = MybatisUtils.class.getClassLoader().getResourceAsStream(resource);
    
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
    
    
            return factory;
        }
        

测试方法

@Test
   public void testSelect4(){
       /*set auto commit ,which equals to the above*/
       SqlSession session = MybatisUtils.getFactory().openSession(true);

       String statement = "com.web.mapper.classMapper.getClass4";
       /*return the effect rows*/
       Classes classes = session.selectOne(statement, 1);
       Teacher teacher = classes.getTeacher();
       List list = classes.getList();
       System.out.println("result.."+classes+","+classes.getClass());
       System.out.println(teacher);
       System.out.println(list);
   }

result as follows :
> result..Classes [id=1, list=[Student [id=1, name=stu1], Student [id=2,
> name=stu2], Student [id=3, name=stu3]], name=计算机, teacher=Teacher
> [id=1, name=李明]],class com.web.model.Classes Teacher [id=1, name=李明]
> [Student [id=1, name=stu1], Student [id=2, name=stu2], Student [id=3,
> name=stu3]]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68188.html

相关文章

  • Sequelizejs 关联

    摘要:看似一对一其实一对多这里的指的应该是查询数据主表结果中关联信息是以单个形式作为一个属性挂在主表每一个对象中实际上是主表与关联表的多对一关系拿中的和中的进行关联配置的别名配置中的外键字段名称,默认为配置中的目标键字段名称,默认为主键查 One-To-One 看似一对一,其实一对多.这里的 One-To-One 指的应该是查询数据(主表)结果中,关联信息是以单个形式作为一个属性挂在主表每一...

    Thanatos 评论0 收藏0
  • MybatisCRUD与多关联的无SQL通用方案_2: 无SQL实现关联查询的自动绑定

    摘要:对关联另外的实体关联查询另外一张表的多个实体如部门实体对应的对象中需要关联多个子部门实体。对于关联一个或多个实体的情况,一般通过的实现无的实现方案不写,不通过的,要更优雅的实现关联的自动绑定,一个主流的方案就是类似的注解了。 上一篇无SQL实现单表CRUD中我们已经通过Mybatis-plus插件的通用Mapper实现了单表的CRUD的无SQL化,已经可以有效减少Mybatis的代码量...

    30e8336b8229 评论0 收藏0
  • 通过项目逐步深入了解Mybatis<三>

    摘要:场合常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用将每一条记录映射到中,在前端页面遍历中是即可。作用将关联查询信息映射到一个对象中。 相关阅读: 1、通过项目逐步深入了解Mybatis 2、 通过项目逐步深入了解Mybatis 本项目所有代码及文档都托管在 Github地址:https://github.com/zhisheng17/myb...

    khlbat 评论0 收藏0

发表评论

0条评论

DevTTL

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<