MyBatis 示例-联合查询】的更多相关文章

简介 MyBatis 提供了两种联合查询的方式,一种是嵌套查询,一种是嵌套结果.先说结论:在项目中不建议使用嵌套查询,会出现性能问题,可以使用嵌套结果. 测试类:com.yjw.demo.JointQueryTest,提供了对嵌套查询和嵌套结果的测试. 数据库表模型关系 学生信息级联模型关系:链接 学生信息级联模型关系是一个多种类型关联关系,包含了如下几种情况: 其中学生表是我们关注的中心,学生证表和它是一对一的关联关系: 而学生表和课程成绩表是一对多的关系,一个学生可能有多门课程: 课程表和课…
1. 疑问 在之前的章节中我们阐述了如何用Mybatis实现检查的查询,而我们实际的需求中,绝大部分查询都不只是针对单张数据表的简单查询,所以我们接下来要看一下Mybatis如何实现联合查询. 2. 数据库准备 --销售单表 CREATE TABLE tbSaleM ( ID ,), SaleDate DATETIME, --销售日期 ClientName ), --客户名称 AmountSum NUMERIC(,), --销售数量汇总 MoneySum NUMERIC(,), --销售金额汇总…
在xml中只需要需要写如下的代码即可实现分页: <select id="selectUserList" parameterType="map" resultType="com.test.mybatisplus.pojo.User"> SELECT <include refid="Base_Column_List" /> FROM user WHERE name LIKE CONCAT("%&q…
数据库表结构 department employee 要求一 现在的要求是输入 id 把 employee 表的对应员工数据查询出来,并且查询出该员工的所处部门信息 JavaBean public class Employee { private Integer id; private String lastName; private String email; private String gender; private Department dept; setter和getter......…
映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBatis 提供的 Map 接口作为参数来实现. StudentDao /** * 使用 Map 传递参数 * * @param params * @return */ List<StudentDO> listByMap(Map<String, String> params); Studen…
MyBatis 提供了很多默认类型处理器,参考官网地址:链接,除了官网提供的类型处理器,我们也可以自定义类型处理器. 具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口, 或继承 org.apache.ibatis.type.BaseTypeHandler 类 , 然后可以选择性地将它映射到一个 JDBC 类型. 测试类:com.yjw.demo.TypeHandlerTest 比如我们要自定义一个性别的枚举类型处理器,实现步骤如下所示: 创建类型处理器…
简介 为了全面熟悉 MyBatis 的使用,整理一个 MyBatis 的例子,案例中包含了映射器.动态 SQL 的使用.本章先介绍项目结构和配置. 项目地址:链接 数据库表的模型关系:链接 项目结构 项目框架:Spring Boot.MyBatis.Mybatis-PageHelper.Druid.Swagger: db 目录存放数据库 SQL 文件,项目中使用的表可以通过该 SQL 创建: com.yjw.demo.mybatis.biz 目录存放业务相关的类: com.yjw.demo.my…
MyBatis 提供两种类型的缓存,一种是一级缓存,另一种是二级缓存,本章通过例子的形式描述 MyBatis 缓存的使用. 测试类:com.yjw.demo.CacheTest 一级缓存 MyBatis 默认开启一级缓存.一级缓存是相对于同一个 SqlSession 而言的,所以在参数和 SQL 完全一样的情况下,我们使用同一个 SqlSession 对象调用同一个 Mapper 的方法,往往只执行一次 SQL,因为使用 SqlSession 第一次查询后,MyBatis 会将其放在缓存中,以后…
MyBatis 的动态 SQL 包括以下几种元素: 详细的使用参考官网文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 本章内容简单描述这些动态 SQL 在使用的过程中需要注意的地方. choose, when, otherwise 比如我们要实现如下功能: 当学生姓名不为空,则只用学生姓名作为条件查询 当学生性别不为空,则只用学生性别作为条件查询 当学生姓名和学生性别都为空,则要求学生学生证件号不为空 针对这种情况,MyBatis…
简介 利用 MyBatis Plugin 插件技术实现分页功能. 分页插件实现思路如下: 业务代码在 ThreadLocal 中保存分页信息: MyBatis Interceptor 拦截查询请求,获取分页信息,实现分页操作,封装分页列表数据返回: 测试类:com.yjw.demo.PageTest 插件开发过程 确定需要拦截的签名 MyBatis 插件可以拦截四大对象中的任意一个,从 Plugin 源码中可以看到它需要注册签名才能够运行插件,签名需要确定一些要素. 确定需要拦截的对象 Exec…
测试类:com.yjw.demo.PrimaryKeyTest 自增长列 数据库表的主键为自增长列,在写业务代码的时候,经常需要在表中新增一条数据后,能获得这条数据的主键 ID,MyBatis 提供了实现的方法. StudentMapper.xml <insert id="insertByAutoInc" parameterType="studentDO" keyProperty="id" useGeneratedKeys="tr…
(转自:http://blog.csdn.net/canot/article/details/51485955) Mybatis表现关联关系比hibernate简单,没有分那么细致one-to-many.many-to-one.one-to-one.而是只有两种association(一).collection(多),表现很简洁.下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的. 以最简单的用户表订单表这个最简单的一对多做示例: 对应的JavaBean:…
原文:https://blog.csdn.net/qq_39706071/article/details/85156840 实体类: 嵌套查询mapper方法:嵌套查询的弊端:即嵌套查询的N+1问题尽管嵌套查询大量的简化了存在关联关系的查询,但它的弊端也比较明显:即所谓的N+1问题.关联的嵌套查询显示得到一个结果集,然后根据这个结果集的每一条记录进行关联查询.现在假设嵌套查询就一个(即resultMap 内部就一个association标签),现查询的结果集返回条数为N,那么关联查询语句将会被执…
下面就来说一下 mybatis 是通过什么来实现多表联合查询的.首先看一下表关系,如图: 这 里,我已经搭好了开发的环境,用到的是 SpringMVC + Spring + MyBatis,当然,为了简单期间,你可以不用搭前端的框架,只使用 Spring + MyBatis 就可以,外加 junit 测试即可.环境我就不带大家搭了,这里只说涉及到联合查询的操作. 设计好表之后,我用到了 mybatis 的自动生成工具 mybatis generator 生成的实体类.mapper 接口.以及 m…
在这篇文章里面主要讲解如何在mybatis里面使用一对一.一对多.多表联合查询(类似视图)操作的例子. 注:阅读本文前请先大概看一下之前两篇文章. 一.表结构 班级表class,学生表student,班级学生关系表ClassStudent. 这里一个学生只会在一个班级里面,也就是一对一的关系:一个班级有多个学生,也就是一对多的关系. 结构如下: CREATE TABLE [dbo].[Class]( [class_id] [int] NOT NULL, ) NOT NULL, CONSTRAIN…
第一次学习Mybatis.net,在博客园也找到好多资料,但是在配置成功之后也遇到了一些问题,尤其是在动态SQl拼接时候,这里把遇到的问题还有自己写的一个Demo贴出来,希望能帮到新手,有不适合的地方也希望大家指出,大家互相学习,共同进步. 首先我们需要下载IBatisNet程序包,这里就不多说了 一.创建一个MVC4的Web应用程序,并引用我们下载的IBatisNet程序包中的IBatisNet.DataMapper.dll,这里我只引用了这一个,log4net我没有引用也没有配置使用,全部程…
MyBatis 多表联合查询,两张表中字段重复时,在配置文件中,sql语句联合查询时使用字段别名,resultMap中对应的column属性使用相应的别名: <resultMap type="Vote" id="VoteMapper"> <id column="id" property="id"/> <result column="theme" property="t…
Mybatis oracle多表联合查询分页数据重复的问题 多表联合查询分页获取数据时出现一个诡异的现象:数据总条数正确,但有些记录多了,有些记录却又少了甚至没了.针对这个问题找了好久,最后发现是由于多个排序字段不唯一,同样的排序顺序每次运行返回的结果顺序不一致,导致这样的现象出现. SELECT TEMP_.* FROM (select temp.*, ROWNUM ROWNUM_ from (SELECT t2.ID FROM tableA t, tableB t2 WHERE t.ID =…
这两天项目用到ibatis,碰到and or的联合查询,语句像这样的 select * from table where xxx = "xxx" and (xx1="xx1" or xx2="xx2") baidu跟google半天只找到一个手动写xml语句的,内容地址如下: http://lyfei022.blog.163.com/blog/static/82558312009313104138320/ 个人还是觉得不方便,于是去查mybati…
一.先建立两个实体类和配置文件 配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <pr…
查询Emp的同时,查出emp对应的部门Department 方法1:联合查询,使用级联属性封装结果集 <!-- 联合查询,使用级联属性封装结果集 type:要自定义规则的javaBean类型 id:唯一标识,方便引用 column:指的是数据库表中的列名 property:列名对应的javaBean中的属性名称 --> <resultMap type="cn.bdqn.mybatis.been.Emp" id="myDifemp"> <…
mybatis example 使用AND 和OR 联合查询 ViewPsmsgconsultExample example=new ViewPsmsgconsultExample(); ViewPsmsgconsultExample.Criteria criteria=example.createCriteria(); criteria.andToidEqualTo(mctid); criteria.andStatusEqualTo("0"); ViewPsmsgconsultExa…
本文转自:http://www.cnblogs.com/xdp-gacl/p/4264440.html#!comments 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4…
什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:1. 从配置文件(通常是XML配置文件中)得到 sessio…
由于是练习,故只做了感兴趣的一部分测试. 测试类容XML配置转注解方式 实体类为了测试请忽略设计是否合理… User.java @Alias("User")public class User {    private Integer id;    private String username;    private String password;    private Timestamp birthday;    private Boolean sex;}12345678UserI…
Mybatis的简单联合查询操作: 实体类: Employee: package com.test.mybatis; public class Employee { private Integer id; private String lastName; private String email; private String gender; private Depart depart; public Integer getId() { return id; } public void setI…
前言 在项目中经常会使用到一些简单的联合查询获取对应的数据信息,我们常规都是会根据对应的mapper接口写对应的mapper.xml的来通过对应的业务方法来调用获取,针对这一点本人感觉有点繁琐,就对@select注解联合查询进行探索和尝试,并将自己总结的分享给大家,有不到之处,敬请大家批评指正!!! pom.xml所用到依赖如下 <dependency> <groupId>org.springframework.boot</groupId> <artifactId…
下面是一个树形结构表自连接 联合查询 Demo <resultMap id="BaseResultMap"  type="com.maidan.daas.entity.AccoSysmanResource" >    <id column="pid" property="pid" jdbcType="INTEGER" />    <result column="cre…
1.使用 resultMap 实现关联单个对象(联合查询方式) <resultMap type="Student" id="stuMap1"> <id column="sid" property="id"/> <result column="sname" property="name"/> <result column="age&quo…
单一条件查询: var table2Object = (from t1 in db.table1 join t2 in db.table2 on t1.id equals t2.id select t2).FirstOrDefault(); 复合条件 查询: 多个主键 联合查询 var table2Object = (from t1 in db.table1 join t2 in db.table2 on new { t1.id, t1.another_id } equals new { t2.…