mybatis一对一

Mybatis与Ibatis比较

心不动则不痛 提交于 2020-04-07 07:56:50
随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis 虽然从正式版发布至今也有近一年时间,官方也非常友好的提供了 中文版的使用手册 ,不过相信很多人还在项目中使用ibatis2.x版本。 究竟Mybatis有哪些新特性,能给我们带来哪些好处呢?以下是我看一位大侠研究后 1、Mybatis实现了接口绑定,使用更加方便。 在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。 这可以说是Mybatis最重要的改进。 注意: 虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置, 不过强烈建议仍然使用xml配置的方式。毕竟annotation的配置方式功能有限且代码入侵性太强。使用xml配置方式才能体现出Mybatis的优势所在 2、对象关系映射的改进,效率更高 相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。 不过这种方式存在“N+1查询问题”。 概括地讲,N

Mybatis实例

你离开我真会死。 提交于 2020-04-03 21:59:52
数据库中:USERT t , WEBINFOR t(表中有一列关联usert某列) 建模型,分析好哪个表是一对一(webinfo ),哪个表是一对多(usert)(一条数据对另一个表中多条数据). 对象级联 建包 建xml和interface接口类 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"> 第一种方式:结果是从一对一这个表(WebinfoMapper)查看 对象级联 方法查询 WebinfoMapper.xml <mapper namespace="com.hanqi.mapper.WebInfoMapper">//复制的对应的接口里面的限定名 <resultMap type="webInfo" id="webinfoResult2"> <id property="ids" column="IDS"/> <association property="usert" column="USERID" select="com.hanqi.mapper.UsertMapper.selectUsertById" /> <

【MyBatis源码分析】环境准备

家住魔仙堡 提交于 2020-03-30 20:49:25
Mybatis学习总结 《 Mybatis系列(一)入门 》 《 Mybatis系列(二)配置 》 《 Mybatis系列(三)简单示例 》 基础 但是实际使用不采用这个方式 参考 第九节 《 Mybatis系列(四)映射文件 》 《 Mybatis系列(五)动态SQL 》 可以的 《 Mybatis系列(六)接口式编程 》 这节很有用 《 Mybatis系列(七)关联映射 》 《 Mybatis系列(八)集合映射 》 《 Mybatis系列(九)Spring & Mybatis整合 》 这节很有用 《 Mybatis系列之实战篇(上) 》 《 Mybatis系列之实战篇(中) 》 《 Mybatis系列之实战篇(下) 》 Mybatis实战之TypeHandler高级进阶 Mybatis实战之自定义TypeHandler处理枚举 深入springMVC------文件上传源码解析(上篇) 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇) 深入浅出Mybatis系列(九)---强大的动态SQL 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete 深入浅出Mybatis系列(六)---objectFactory

MyBatis的一对一关联关系映射

会有一股神秘感。 提交于 2020-03-21 09:29:39
原文链接:http://www.yiidian.com/mybatis/one-to-one.html 1 什么是一对一、一对多映射? 以用户和订单举例, 一对一 : 一个订单只属于一个用户 ==> 订单对用户是一对一关系 一对多 : 一个用户可以拥有多个订单 ==> 用户对订单是一对多关系 注意:在MyBatis中,如果要完成多对多关系,其实就是两个一对多映射! 接下来先讲解MyBatis的一对一映射如何实现。 2 建立表结构 2.1 创建用户表 CREATE TABLE `t_user` ( `id` int(11) DEFAULT NULL, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2.2 创建订单表 CREATE TABLE `t_order` ( `id` int(11) DEFAULT NULL, `orderno` varchar(100) DEFAULT NULL, `amount` double DEFAULT NULL, `user_id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2.3 插入测试数据 3

数据库开发

泄露秘密 提交于 2020-03-11 18:01:48
#MyBatis进阶 复杂Java对象与多张数据库表之间的映射关系 配置数据库连接池提高MyBatis对后端数据库访问的性能 ##更为复杂的E-R图 学员对课程是多对多关系,而教员与课程是一对多关系 学员 User 课程 Couser 教员 Author 以上实体对应的关系图如下: 以上关系对应的数据库表关系如下: 各个实体都具有对应的属性,但是由于User与Cousre是多对多关系,则我们还需要一个多对多关系表UserCourse,来保存User与Course的关系。由于Teacher与Course是一对多的关系,则我们在Course中添加Teacher的唯一标示。 ##复杂对象关系 Java对象 关联 容器 嵌套 ##ResultMap 复杂Java关系映射解决,帮助我们复杂对象到多张数据库表的转换。 ResultMap元素师MyBatis中最重要最强大的元素。 数据库永远不是你想要的或需要它们是什么样的。 ResultMap可以实现复杂查询结果到复杂对象关联关系的转化。 ##Constructor 通过构造方法的方式,对对象进行赋值建立映射关系,这种方法一般用于处理关联时,使用。 类在实例化时,用对象的构造函数注入到对象中: idArg - ID参数;标记结果作为ID可以帮助提高整体效能 arg - 注入到构造方法的一个普通结果 ##ResultMap通过构造函数实例 ##

MyBatis面试题(二)

*爱你&永不变心* 提交于 2020-03-11 02:32:04
说说什么是MyBatis的接口绑定? 答:在MyBatis项目中定义任意的接口,并将接口里面的方法和sql语句进行绑定,这样可以直接通过接口方法来调用相应的sql语句,这就是接口绑定。 MyBatis的接口绑定有哪些实现方式? 答:一种是通过注解来绑定,在接口的方法上加上@Select、@Update这些注解,注解里面的参数就是要运行的sql语句。另外一种就是直接在xml文件里写sql,通过xml文件里namespace这个标签的值来确定对应的到底是哪个接口,所以namespace要是接口的全限定名。 什么情况下用注解绑定,什么情况下用xml绑定? 答:当SQL语句比较简单时候,用注解绑定,当SQL语句比较复杂时候,用xml绑定。但是个人建议还是用xml绑定的好,因为在业务的发展中,SQL只会越来越复杂,就没见过几个SQL由繁入简的例子,所以不如一开始就写在xml文件里,省事。 使用MyBatis的mapper接口调用时有哪些要求? 答:首先xml文件里的namespace要和mapper接口的全路径一样,这样才能一一对应,其次mapper接口的方法名要和xml文件中定义的每个sql的id一样,这样方法才能对应,最后就是mapper接口中方法的返回值和参数要和其在xml文件中对应sql的parameterType以及resultType的类型相同。 Mybatis是否支持延迟加载?

mybatis一对一&多对一配置详解

假装没事ソ 提交于 2020-03-10 20:32:28
一对一建表原则 将任意一方当做主表(B是主表),A创建外键列指向B的一方的主键,A外键列唯一 说白了多对一也是一对一的其中一种表现形式 java建立关系原则 一方持有另外一方的引用 举例子 一个客户对应多个订单 就客户而言,客户和订单是1对多的关系 就订单而言,每个订单只能属于一个用户,所以订单和客户属于1对1的关系 代码实现(订单和客户的一对一关系) 步骤一:明确两个实体类关系,在订单的一方提供客户的引用 [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 public class Customer { private Integer cid ; private String cname; //省略get/set/toString } /** 一个订单属于一个客户,在订单方创建客户引用 注意.客户引用的对象名字很重要 */ public class Orders { private Integer oid ; private String orderName; private String cid; private Customer c; //省略get/set/toString } 步骤二:创建OrdersMapper接口和OrdersMapper.xml映射配置文件(具体解释看下图)

课时9::MyBatis整合Log4j、延迟加载

折月煮酒 提交于 2020-03-10 19:40:20
.1)如何整合Log4j到mybatis   1.导入log4j的jar包 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>   2.在主配置文件中开启log4j <!-- 配置log4j启动--> <settings> <setting name="logImpl" value="LOG4J"></setting> </settings>     2.1 .如果不写value里面的值 会按照这个顺序查找SLF4J-->Apache Commons Logging-->Log4j 2---Log4j-->JDK logging   3.在resources中配置log4j.properties文件 .2)延迟加载   1.概念     1.1 一对一,一对多,多对一,多对多     一对多:班级--学生,     如果不采用延迟加载(立即加载),查询时会将一对多都查询,班级丶班级中的所有学生。     如果想要 暂时只查询一个1的一方,而多的一方 先不查询,而是在需要查询的时候再去查询--->延迟加载   2.以学生和学生证一对一案例为例     2.1

mybatis 关联(多表)查询

≡放荡痞女 提交于 2020-03-08 15:20:09
一对一查询 使用 resultType : 使 pojo 类继承一个表对应的 javabean ,添加另一个表的 javabean 属性。 Xml 配置和普通 pojo 是一样的 使用 resultMap : 使 pojo 添加另一个表对象的 javabean 属性。 Xml 配置中使用 <association property= "user" javaType= " user 路径 " > 标签配置 association 配置一个关联的对象。 一对多查询 使用 resultMap (简单,推荐): pojo 总添加 List<xxx> 属性, xxx 为另一表的 javabean 类。 Xml 配置 ResultMap : <collection property= " user " ofType= " user 路径 " > collection :配置关联的对象集合。 ofType : List 中泛型的类路径 使用 resultType (复杂): 使用双重循环遍历,去掉重复记录。 多对多查询 参考一对多,就是层级数多了一点。 来源: https://www.cnblogs.com/Shieryue/p/6638993.html

MyBatis笔记

半腔热情 提交于 2020-03-03 16:28:18
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github; MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射; MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录; 好处: 1. 简单易学 :本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 2. 灵活 :mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。 3. 解除sql与程序代码的耦合 :通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 4. 提供映射标签,支持对象与数据库的orm字段关系映射 5. 提供对象关系映射标签,支持对象关系组建维护 6. 提供xml标签,支持编写动态sql.