0049 MyBatis关联映射--一对一关系】的更多相关文章

世上的事务总不是孤立存在的,表现在Java类里面,则是类与类之间的关系,比如继承is-a.依赖use-a.关联has-a,反映在数据库中,则是表与表之间的关系,比如外键 关联关系存在着以下几种类型:一对一关系:一对多和多对一关系:多对多关系 一对一关系:     对象A和对象B一一对应,最直观的例子:人和身份证的关系,一个人只拥有一张身份证,而一张身份证只会属于一个人 一对多和多对一关系:     一个班级可以有多个学生:一个人可以有多本书:一个用户可以有多个订单 多对多关系:     用户和商…
在项目开发中,会存在一对一的关系,比如一个人只有一个身份证,一个身份证只能给一个人使用,这就是一对一关系.一对一关系使用主外键关联. table.sql,在数据库中创建如下两个表并插入数据 CREATE TABLE T_CARD( ID INT PRIMARY KEY AUTO_INCREMENT, CODE VARCHAR(20) ); INSERT INTO T_CARD(CODE)VALUES('130113198701274657'); CREATE TABLE T_PERSON( ID…
hibernate.cfg.xml: <hibernate-configuration> <session-factory name="sessionFactory"> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.…
在学数据库概论的时候会听到这么几个词:数据库的关系分为一对一.一对多.多对多.对于在学校里学的知识已经忘得差不多了,在这里简单的提一下数据库的关系.此篇是介绍MyBatis是如何实现数据库中一对一关系的,我们就暂且先介绍一对一关系.所谓一对一关系其实在生活中很常见,比如一个学生有且只对应一个属于他的学生证.下面就是我们的所假设的数据库物理模型. 在这个数据库模型中,学生证和学生表是1对1的关系.那么基于此,我们会在Java代码的POJO包中就会有两个POJO对象,Student和SelfCard…
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------…
对于数据库中的多对多关系建议使用一个中间表来维护关系. 1.创建四张表,分别为用户表,商品表,订单表,中间表. DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` ) NOT NULL AUTO_INCREMENT, `username` ) NOT NULL, `sex` ) NOT NULL, `age` ) NOT NULL, PRIMARY KEY (`id`) ) ENGINE DEFAULT CHARSET=utf8…
一对多 查询type表的某一条数据,并且要同时查出所有typeid与之配置的user,最终要得到一个以下类型的Type对象 public class Type { String id; String name; List<User> users; dao层 @Select("select * from user where typeid = #{typeid}") public List<User> findUserById(String typeid); @R…
一对多 查询category中的某一条数据,同时查询该分类下的所有Product. Category.java public class Category { private Integer id; private String name; private List<Product> product; .... product.java public class Product { private Integer id; private String name; private String…
实际项目中也存在很多的一对多的情况,下面看看这个简单的例子 table.sql CREATE TABLE tb_clazz( id INT PRIMARY KEY AUTO_INCREMENT, CODE VARCHAR(18), NAME VARCHAR(18) ); INSERT INTO tb_clazz(CODE,NAME) VALUES('w5','五年级'); CREATE TABLE tb_student( id INT PRIMARY KEY AUTO_INCREMENT, NA…
项目开发中,多对多关系也是非常常见的关系 在数据库中创建表的脚本 table.sql CREATE TABLE tb_user( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(18), loginname VARCHAR(18), PASSWORD VARCHAR(18), phone VARCHAR(18), address VARCHAR(18) ); INSERT INTO tb_user(username,loginname,PA…
一对多关系更加常见,比如用户和订单,一个用户可以有多个订单 DROP TABLE IF EXISTS customer; /*用户表*/ CREATE TABLE customer( `pk` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(16), `email` VARCHAR(16), `password` VARCHAR(16) ); /*插入三条测试数据*/ INSERT INTO customer(`name`,`email`,`pass…
用户与订单时一对多关系,再加上商品信息的话,订单与商品之间就是多对多关系了 DROP DATABASE IF EXISTS testdb; USE testdb; /*用户表,记录用户信息:用户与订单为一对多关系:一个用户可拥有多个订单*/ DROP TABLE IF EXISTS `tb_user`; CREATE TABLE tb_user( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(18), loginname VARCHAR(…
Mybatis中表与表之间的关系分为一下4类: 1)一对一 2)一对多 3)多对一 4)多对多 创建数据Demo表 数据库表: 用户表user:记录了购买商品的用户信息. 订单表orders:记录了用户所创建的订单(购买商品的订单). 订单明细表orderdetail:记录了订单的详细信息即购买商品的信息. 商品表items:记录商品信息. 数据模型: 数据表之间的关系: 先分析数据级别之间有关系的表之间的业务关系: usre和orders: user —-> orders:一个用户可以创建多个…
数据库中一对多通常使用主外键关联,外键应该在多方,即多方维护关系. 下面举一个简单实例来看看MyBatis怎么处理一对多的关系. 1.创建一个项目,导入所需jar包,导入db.properties配置文件,导入log4j.properties配置文件 2.创建一个数据库,在里面创建两张表 -- Table structure for `t_student` -- ---------------------------- DROP TABLE IF EXISTS `t_student`; CREA…
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------…
一对一 创建数据表 CREATE TABLE `tb_card` ( `id` int NOT NULL AUTO_INCREMENT , `code` varchar() NULL , PRIMARY KEY (`id`) ); insert into tb_card(code) values('); CREATE TABLE tb_person(id ),sex VARCHAR(),age int,card_id int UNIQUE); INSERT INTO tb_person(name…
多对一: <!-- 方法一: --> <select id="getNewsListByPage" parameterType="com.zqc.share.model.news.NewsPage" resultMap="newsPageMap"> select * from news limit #{newsPage.page},#{newsPage.size} </select> <resultMap…
<resultMap type="com.secoo.my.bean.OrderItemComment" id="orderItemResult">  <id column="id" property="id"/>  <result column="_productCode" property="productCode"/>  <result c…
在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现.不过这里不说,做关联查询的步骤可以简单的总结为以下的几步: 1.分析出表和表之间的关联关系 2.Sql语句的写法 3.在实体类中把附表的信息添加到主查询表中 4.配置resulMap 配置你主要查询表的信息 配置你关联表的信息 这里我先给出几个表的字段和关系,以三张表为例(用户表:users,订单表:orders,订单详情表:orderDetail)大概字段如下:…
MyBatis的核心对象和配置 #1. SqlSessionFactory对象: 单个数据库映射关系经过编译的内存镜像: 作用:创建SQLSession对象. //读取配置文件 InputSteam is=getResourceAsStream("配置文件位置"); //用SqlSEssionFactoryBuilder()创建实例,并用build方法创建SqlSessionFactory,在会话工厂中去处理配置文件 sqlSessionFactory sqlSessionFactor…
关联关系是面向对象分析.面向对象设计最重要的知识.合理的关联映射将大大简化持久层数据的访问.关联关系大致分为以下三类: 一对一 一对多 多对多 1. 一对一 一对一关系推荐使用唯一主外键关联,即两张表使用外键关联关系,由于是一对一关联,因此还需要给外键列增加unique唯一约束. -- 身份证表 create table tb_card { id int primary key auto_increment, code ) }; '); -- 个人表 create table tb_person…
一.一对一 mybatis处理一对一主要通过<resultMap>中的<association>元素来处理. <association>元素主要使用方方式有两种: <!--方式一 嵌套查询--><association property = "card" column = "card_id" javaType = "com.mybatis.associateMapping.IdCard" se…
mybatis的关联映射一对一一对多多对多 一.一对一(一个人只能有一个身份证号) 1.创建表创建表tb_card CREATE TABLE `tb_card` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) INSERT INTO tb_card(CODE)VALUES('150421178702260614'); 创建表tb_person CREATE…
上一篇博客我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息.如图所示: 关键原因在于对象模型具有方向性: 单向:一端只能加载另一端,不能反过来. 双向:两端都可以加载另一端. 问题来了:如何我们想从身份证端(IdCard)加载人(Person),怎么办呢? 下面我们开始介绍一对一的双向关联映射. 映射原理 双向关联映射与单向关联映射的原理是一样的,双向关联映射并不影响存储,只影响加载.所以,双向关联映射和单向…
关键原因在于对象模型具有方向性: 单向:一端只能加载另一端,不能反过来. 双向:两端都可以加载另一端. 问题来了:如何我们想从身份证端(IdCard)加载人(Person),怎么办呢? 下面我们开始介绍一对一的双向关联映射. 映射原理 双向关联映射与单向关联映射的原理是一样的,双向关联映射并不影响存储,只影响加载.所以,双向关联映射和单向关联映射的关系模型是一样的即数据库的表结构是一样的,只是IdCard的实体类和配置文件(IdCard.hbm.xml)发生了一点点变化. 对象模型 从上图中可以…
一. Mybatis关联映射 1 讲数据库中关联关系,主键表与外键表 一对多,多对一,主键表表示一 与外键表表示多 学生与学校的关系,工人与工厂,人员与部门的关系,.... 多        一                多         一      多        一 2 多表查询 多表查询 方法一 select a.*,b.* from student a,school b  where a.t_sid=b.t_id select a.*,b.t_name from student…
mybatis高级映射 一对一关联映射 需求:查询订单信息,关联查询用户信息(一个订单对应一个用户) (1)通过resultType实现 sql语句: select orders.* , USER.username, USER. sex , USER.address FROM orders , USER WHERE orders.userid = USER .id 创建pojo类 由于orders.java不能全部映射字段,所以要新建pojo 创建一个pojo继承包括查询字段较多的·一个po类…
开篇前言 上篇博文[SSH进阶之路]hibernate映射--一对一单向关联映射,小编介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息.为什么呢,因为对象模型具有方向性,在前面的博文Hibernate基本映射中,小编介绍了单向和双向,所谓的单向就是一段只能加载另一个端,不能反过来:双向就是两端都可以加载另一端,可以这样来理解,单向就是一厢情愿,双向就是两情相悦.ok,那么问题来了,如果我们想从IdCard这端加载…
上篇博文[SSH进阶之路]Hibernate映射--一对一单向关联映射(五),我们介绍了一对一的单向关联映射,单向是指仅仅能从人(Person)这端载入身份证端(IdCard),可是反过来.不能从身份证端载入人得信息. 如图所看到的: 关键原因在于对象模型具有方向性: 单向:一端仅仅能载入还有一端.不能反过来. 双向:两端都能够载入还有一端. 问题来了:怎样我们想从身份证端(IdCard)载入人(Person),怎么办呢? 以下我们開始介绍一对一的双向关联映射. 映射原理 双向关联映射与单向关联…
Hibernate中一对一关联映射共分为两种,一种是一对一主键关联映射,另一种是一对一唯一外键关联映射.下面简单介绍一下这两种关联映射. 一对一主键关联映射 一对一主键关联映射的两个实体有相同的ID.这种映射又分为单向一对一关联主键映射和双向一对一主键关联映射. 单向一对一主键关联映射 实例类图 映射文件IdCard.hbm.xml <hibernate-mapping> <class name="com.bjpowernode.hibernate.IdCard" t…