myBatis系列之三:增删改查是基于单表的查询,如果联表查询,返回的是复合对象,需要用association关键字来处理. 如User发表Article,每个用户可以发表多个Article,他们之间是一对多的关系. 1. 创建Article表,并插入测试数据: -- Drop the table if exists DROP TABLE IF EXISTS `Article`; -- Create a table named 'Article' CREATE TABLE `Article` (…
<?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"> <!-- namespace的名字需要跟接口的类名一致 --> <mapper namesp…
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但…
有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.我们首先创建一个Article 这个表,并初始化数据.  程序代码 Drop TABLE IF EXISTS `article`; Create TABLE `article` (   `id` int(11) NOT NULL auto_increment,   `userid` int(11) NOT NULL,   `title`…
有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.我们首先创建一个Article 这个表,并初始化数据.  程序代码 Drop TABLE IF EXISTS `article`;Create TABLE `article` (  `id` int(11) NOT NULL auto_increment,  `userid` int(11) NOT NULL,  `title` var…
转自:https://www.cnblogs.com/shanheyongmu/p/5653599.html 有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.我们首先创建一个Article 这个表,并初始化数据. Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` ) NOT NULL auto_incremen…
有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.我们首先创建一个Article 这个表,并初始化数据. Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` ) NOT NULL auto_increment, `userid` ) NOT NULL, `title` ) NOT NULL, `content` t…
Hibernate共提供4种多表关联数据查询方式 OID数据查询+OGN数据查询方式 HQL数据查询方式 QBC数据查询方式 本地SQL查询方式(hibernate很少用) 1.OID数据查询+OGN数据查询方式 public class TestOID_OGN { /** * 什么时候时候什么时候发送 */ @Test public void findUser() { SessionFactory sf = H3Util.getSessionFactory(); Session session…
10.1 简单数据记录查询 SELECT field1,field2,...fieldn FROM table_name; “*” ——查询所有记录 SELECT * FROM table_name; DISTINCT——避免重复数据查询 SELECT DISTINCT field1,field2,...fieldn FROM table_name; AS——修改字段名 SELECT field1 [AS] otherfield1,field2 [AS] otherfield2 FROM tab…
原文链接:孤傲苍狼 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUT…
一.一对多查询 需求:查询所有订单信息,关联查询下单用户信息. 注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询.如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订单.   sql语句: SELECT o.id, o.user_id userId, o.number, o.createtime, o.note, u.username, u.address FROM `order` o LEFT JOIN `user` u…
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VA…
实体order和user采用resultMap order package pojo; import java.util.Date; public class Order { private Integer id; private Integer userId; private String number; private Date createtime; private String note; private User user; public User getUesr() { return…
创建一个实体继承两个实体之一,另一个实体作为属性 实体1. order package pojo; import java.util.Date; public class Order { private Integer id; private Integer userId; private String number; private Date createtime; private String note; public Integer getId() { return id; } publi…
1.实体类 public class Student { private int id; private String name; } public class Classes { private int id; private String name; private Teacher teacher; private List<Student> students; } 2.映射文件 <?xml version="1.0" encoding="UTF-8&q…
前提: 1.新建Article表和增加模拟数据,脚本如下: Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` ) NOT NULL auto_increment, `userid` ) NOT NULL, `title` ) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE DEFAULT CHARSET=utf8; ', 'test_title'…
11.1 关系数据操作 并(UNION):把具有相同字段数目和字段类型的表合并到一起. 笛卡尔积(CARTESIAN PRODUCT):没有连接条件表关系的返回结果.字段数=table1字段数+table2字段数,记录数=table1记录数*table2记录数. 内连接(INNER JOIN):在表关系的笛卡尔积数据记录中,保留表关系中所有匹配的数据记录,舍弃不匹配的数据记录. 外连接(OUTER JOIN):在表关系的笛卡尔积数据记录中,不仅保留表关系中所有匹配的数据记录,而且还会保留部分不匹…
一.一对一 mybatis处理一对一主要通过<resultMap>中的<association>元素来处理. <association>元素主要使用方方式有两种: <!--方式一 嵌套查询--><association property = "card" column = "card_id" javaType = "com.mybatis.associateMapping.IdCard" se…
首先先来说明一下数据库,数据库有两张表student表和teacher表: student表如下: teacher表如下: 两张表的关系:多个学生关联一位老师(多对一) *其中tid是外键 需要sql语句的朋友可以在这里取: CREATE TABLE `teacher`( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY(`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8 INS…
回到目录 对于MongoDB这个非关系型数据库(NoSql)来说,找一个IDE工具不是很容易,还好被我找到了,它就是大名鼎鼎的MongoVUE,它可以对mongodb数据表进行增删改查,下面我主要说一下它的查询功能,它与传统的SQLSERVER不同,在写语句时我们需要了解一下它自己的一些关键字.…
系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java.util.Date类型 import java.util.Date; public class User { priva…
QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分页查询 setFirstResult(int) setMaxResults(int) 4.查询排序 添加排序 c.addOrder(Order); 排序规则 Order od = Order.asc("字段名") Order od = Order.desc("字段名")…
在上一章中我们学习了<MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射>,这一章主要是介绍一对一关联查询.一对多关联查询与动态SQL等内容. 一.多表关联查询 表与表之间有三种常见的关联关系,分别是一对一,一对多与多对多关系,MyBatis直接提供一对一与一对多的关联关系,可能通过间接的方式实现一对多关联. 1.1.一对一关系 1.1.1.执行环境 假定一个员工(emp)拥有一个登录用户(user),员工与用户表之间是一对一关系: 用户表: 员工表: SQL: ; --…
一.一对一的表查询 查询班级表中班级号为1的对应的记录(包括教师的具体信息) 1.首先建立数据表 数据表class和techear,class表中只有一个外键techear_id,sql脚本如下: CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name ) ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name ), teacher_id IN…
想要了解MyBatis基础的朋友可以通过传送门: MyBatis学习(一)---配置文件,Mapper接口和动态SQL http://www.cnblogs.com/ghq120/p/8322302.html 本文主要介绍了用MyBatis实现数据表之间的各种关系,例如一对多,多对一,一对一和多对多. 一对多和多对一 本项目的例子为公司的部门和员工之间的关系,即一个部门对应多个员工,反过来多个员工对应一个部门即为多对一. 项目的目录为 本项目依旧使用Oracle数据库,对应的表为employee…
前面几节的示例基本都是一些单表查询,实际项目中,经常用到关联表的查询,比如一对一,一对多等情况.在Java实体对象中,一对一和一对多可是使用包装对象解决,属性使用List或者Set来实现,在mybatis中一对一和一对多可是使用association或者collection标签来配合实现. 在MyBatis中有两种方式实现关联查询: 1. 嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集.首先,然让我们来查看这个元素的属性.所有的你都会看到,它和普通的只由 select 和resultMap…
mybatis学习笔记(10)-一对一查询 标签: mybatis mybatis学习笔记10-一对一查询 resultType实现 resultMap实现 resultType和resultMap实现一对一查询小结 本文使用两种方式(resultType和resultMap)实现一对一查询,查询订单信息,关联查询创建订单的用户信息 resultType实现 sql语句 确定查询的主表:订单表 确定查询的关联表:用户表 关联查询使用内连接?还是外连接? 因为orders表中有一个外键(user_…
1使用resultType.ResultMap处理返回结果 处理返回结果 resultType:指定返回值结果的完全限定名,处理多表查询的结果. 多表查询需要定义vo封装查询的结果. 需求:查询部门和部门下对应的岗位 部门名称     岗位名称 办公室        职员 办公室        主人 1.1 建立Post的实体类 package org.guangsoft.entity; /** * 岗位的实体类 * @author guanghe */ public class Post {…
Mybatis提供了关联查询映射的功能. 一.一对一关联…
本章介绍Mybatis之表的关联查询 一对一关联 查询员工信息以及员工的部门信息 1.准备表employee员工表,department部门表 CREATE TABLE `employee` ( `id` ) NOT NULL AUTO_INCREMENT, `last_name` ) DEFAULT NULL, `gender` ) DEFAULT NULL, `email` ) DEFAULT NULL, `dept_id` ) DEFAULT NULL COMMENT '部门ID', PR…