A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

Mybatis 连表查询

一、mybatis简单介绍
    mybatis是一个优秀的持久层框架,他对jdbc操作数据库的过程进行了封装,使开发着只用关注sql本身,不用去关注例如注册驱动,加载链接,得到statement,处理结果集等复杂的过程。mybatis通过xml或者注解的方式,将要执行的各种sql语句配置起来,并通过Java对象和statement中的sql语句映射生成最终的sql语句,最后由mybatis框架执行sql语句,并将结果映射成Java对象返回。   
   什么是高级映射?
    对于数据库中对表的增删改查操作,我们知道增删改都涉及的是单表,而只有查询操作既可以设计到单表操作又可以涉及到多表操作,所以对于输入映射parameterType而言是没有所谓的高级映射的,也就是说高级映射只针对于输出映射(因为高级映射设计到多张表)。  

二、知识剖析
    mybatis工作原理      
    mybatis通过配置文件创建sqlsessionFactory,sqlsessionFactory根据配置文件,配置文件来源于两个方面:一个是xml,一个是Java中的注解,获取sqlSession。         
    SQLSession包含了执行sql语句的所有方法,可以通过SQLSession直接运行映射的sql语句,完成对数据的增删改查和事物的提交工作,用完之后关闭SQLSession。     


    mybatis解决的问题      
    1.使用数据库连接池管理链接,避免了频繁创建了、关闭链接,浪费资源,影响性能的问题。      
    2.用xml管理sql语句,让Java代码和sql语句分离,使得代码更易维护。   
    3.解决了sql语句参数不定的问题。xml中可以通过where条件决定sql语句的条件参数。mybatis将Java对象映射到sql语句,通过statement的parameterType定义输入参数的类型。      
    4.mybatis自动将结果集封装成Java对象, 通过statement的resultType定义输出的类型。避免了因sql变化,对结果集处理麻烦的问题。  

三、常见问题
    什么是外键?
    mybatis多表联查用什么类型接收?

四、解决办法   
     1.A表中的一个字段,是B表的主键,那他就可以是A表的外键。表的外键是另一表的主键, 外键可以有重复的, 可以是空值;     
     2.resultType和resultMapl类型     
        resultType:要自定义pojo 保证sql查询列和pojo的属性对应,这种方法相对较简单,所以应用广泛;            
        resultMap:使用association完成一对一映射需要配置一个resultMap标签,过程有点复杂,如果要实现延迟加载就只能用resultMap实现 ,如果为了方便对关联信息进行解析,也可以用association将关联信息映射到pojo中方便解析。  
                          


1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马