首先,mybatis本身不会判断是否是多表查询,mybatis的多表查询和单表查询其实没有什么区别,你都需要一个对象接收返回值。 例如:select uname name,pgrade grade from table_1 u,table_2 p where uid = pid。这里你从两张表里查出两个字段
MyBatis详解 与配置MyBatis+Spring+MySqlMyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。需要使用的Jar包:mybatis-302jar(mybatis核心包)。mybatis-spring-100jar(与Spring结合包)。MyBatis简介 MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。需要使用的Jar包:mybatis-302jar(mybatis核心包)。mybatis-spring-100jar(与Spring结合包)。
不太清楚,你是想只映射到Test这一个实体,还是两人都要,如果两个都要的话,我觉得是不太可能,你最好直接返回一个map类型,然后在dao或service自己再去处理,如果只放一个的话,如下:
Mybatis的配置文件中不是定义了<resultMap></resultMap>,你需要把Test这个与数据库的test表做个遇射,然后按照你的那个查询语句查就可以了,在返回的时候返回resultMap的id对象,这样处理后的结果,你会返回Test实体,但这个实体中只会有abc这个值,不会有def的值。
要么你就按上面说的,直接返map,然后自己处理。
11 Hibernate 简介
Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 提供的方法完成持久层 *** 作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC接口加以执行。
12 MyBatis简介
iBATIS 的着力点,则在于POJO 与SQL之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM实现。
第二章开发对比
开发速度
Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。
开发社区
Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本418。而Mybatis相对平静,工具较少,当前最高版本32。
开发工作量
Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。
针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。
第一种是使用<resultMap>标签,逐一定义列名和对象属性名之间的映射关系。
第二种是使用sql列的别名功能,将列别名书写为对象属性名,
有了列名与属性名的映射关系后,Mybatis通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。
以上就是关于mybatis 多表查询怎么映射全部的内容,包括:mybatis 多表查询怎么映射、mybatis怎么配置一对多的映射关系、MyBatis可以查询出映射到对象的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)