效果如下: 说明: 时间范围的查询会存在以下问题: 1.如果单纯采用年月日的形式会出现缺少最后一点的数据,比如要查询2015-09-16到2015-09-17,那么2015-09-17 01:00:00的数据不会被查询出来.无论是使用between and还是<=/>=的形式去实现都会有这样的问题. 解决方法可以这样做: 1.如果是以年月日的形式,那么可以采用动态拼接字符串的形式,最后得到2015-09-16 00:00:00到2015-09-17 23:59:59,如果要更精确可以往毫秒级别…
mybatis 插入日期类型精确到秒的问题 Mybatis 插入 数据库是为了防止插入空时报错, Mybatis 提供了一套机制,只要给定插入的字段的类型,如果为空,则它会自动处理为相应类型的默认值: #{ordercd,jdbcType=VARCHAR} 我们都知道,Date类型是精确到时分秒的, 如果需要精确到秒以后,则需要使用 TIMESTAMP 类型 如果数据库字段类型为TIMESTAMP 则  #{operateTime,jdbcType=TIMESTAMP} 这样写是没有问题的. 而…
在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Mybatis的延迟加载就是分多次执行SQL语句,这样就实现了延迟加载的机制,并且第一次执行的结果值可能是接下来执行的SQL语句的参数值,Mybatis实现执行接下来的SQL的原理机制是通过代理类来实现的,就是第一次执行的结果对象其实已经是一个代理对象,当执行接下来相关的对象时会执行其他SQL语句,这样就实…
使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流程说明以及具体的代码实现完成,下面来说下,开发中经常遇到的问题,总结如下所示: 1.启动查询时,会报错:SQL dialect is not configured , 提示你配置方言,打开菜单File,选择settings,然后在inspection - sql -中把方言的√去除,截图如下所示:…
这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia0719/ssm-select 这篇就根据实际文件进行梳理: 首先已经确定的文件有:Person    PersonMapper    PersonMapper.xml    jdbc.properties 这些有的自动生成的文件方法较多,仅测试了其中一个方法,其他的没有去除,有兴趣的可以自己测试下…
梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查询工程的流程说明) 源代码在github上可以下载,地址:https://github.com/guoxia0719/ssm-select 工程运行情况如下所示: 输入查询的用户ID:1时,结果为: 数据库中的数据如下所示: 此次会有开发过程中一些常见的问题,都会根据我自己的实例情况给出建议: 开发…
MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的时候,#{baitang_name}.#{baitang_id} ,大括号里面的变量需要和参数Map中的key保持一致. 测试方法: 测试结果: 如有问题,欢迎纠正!!! 如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9865766.html…
MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持一致. 实体类:TblClient.java 接口方法 注意: 接口中定义了一个新的方法(根据对象属性进行查询数据),方法的参数传入的是一个对象. xml文件 注意: >>> parameterType="baitang" resultType="baitang…
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 二.mybatis快速入门 2.1.准备开发环境 1.创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示: 2.添加相应的jar包 [mybat…
Mybatis中动态SQL多条件查询 mybatis中用于实现动态SQL的元素有: if:用if实现条件的选择,用于定义where的字句的条件. choose(when otherwise)相当于Java中的switch语句,通常when和otherwise一起使用. where:简化SQL语句中的where条件. set 解决SQL语句中跟新语句 我们课已通过几个例子来看一下这几个元素的运用场景: if: <select id="queryEmp"  resultType=&q…
MyBatis系列四 之 智能标签进行查询语句的拼接 使用Foreach进行多条件查询 1.1 foreach使用数组进行多条件查询 在MyBatis的映射文件中进行如下配置 <!--根据数组进行多条件查询 --> <select id="findByForeachAraay" resultType="Student"> select * from Student <if test="array.length>0&quo…
一.一对一查询 实例:查询所有订单信息,关联查询下单用户信息. Method1:使用resultType,定义订单信息po类,此po类中包括了订单信息和用户信息. public class OrdersCustom extends Orders { private String username;// 用户名称 private String address;// 用户地址 get/set.... Mapper.xml <!-- 查询所有订单信息 --> <select id="…
mybatis进阶案例之多表查询 一.mybatis中表之间的关系 在数据库中,实体型之间的关系主要有如下几种: 1.一对一 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1 .例如,一个班级只有一个正班长,一个班长只在一个班中任职. 2.一对多 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集…
在做一对多出现的问题,引发的思考:当数据库表中,主表的主键id和明细表的中的字段名相同时怎么办?Mybatis进行自动映射赋值的时候会不会出现异常?                      注意:Mybatis中做多表联查的时候,不管是一对一.一对多.一对多对多:多对多:都不能有字段重名的情况:不管是主键还是普通字段.一旦字段重名的话,就会造成数据少自动赋值,或者覆盖,甚至重复赋值!规避和解决此类问题的方法: 1.尽量不要表间重名,mybatis里处理起来很麻烦!id和普通字段都是.但是在表多…
Mybatis 多表实现多对多查询.添加操作 学习内容: 1. 多对多之添加操作 1.1.需求 1.2.数据库表(多对多数据库设计需要设计中间表) 1.3.类设计 1.4.Mapper 接口和 Mapper XML 文件编写 1.5.编写单元测试类 2. 单向多对多之额外 SQL 查询 2.1.需求 2.2.需要添加 Mapper 接口 和 Mapper XML 2.3.单元测试方法 总结: 学习内容: 1. 多对多之添加操作 1.1.需求 保存两个学生和两个老师,且这两个老师都教了这个两个学生…
Mybatis 多表实现多对一查询.添加操作 学习内容: 1. 多对一之添加操作 1.1.需求 1.2.数据库表(多对一或一对多,数据库外键都是设置在多的一方) 1.3.类设计 1.4.Mapper 接口和 Mapper XML 文件编写 1.5.编写单元测试类 2. 单向多对一之额外 SQL 查询 2.1.需求 2.2.需要添加 Mapper 接口 和 Mapper XML 2.3.单元测试方法 总结: 学习内容: 1. 多对一之添加操作 1.1.需求 保存一个部门和两个员工,且这两个员工都是…
一.什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能.mybaits提供一级缓存和二级缓存. 1.一级缓存是sqlSession级别的缓存.在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap),用于存储缓存数据.不同的sqlSession之间的缓存区域(HashMap)是互不影响的. 2.二级缓存是mapper级别的缓存,多个sqlSession去操作同一个Mapper的sql语句,多个SqlSession可以公用二级缓存,二级缓存…
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…
在这篇文章里面主要讲解如何在mybatis里面使用一对一.一对多.多表联合查询(类似视图)操作的例子. 注:阅读本文前请先大概看一下之前两篇文章. 一.表结构 班级表class,学生表student,班级学生关系表ClassStudent. 这里一个学生只会在一个班级里面,也就是一对一的关系:一个班级有多个学生,也就是一对多的关系. 结构如下: CREATE TABLE [dbo].[Class]( [class_id] [int] NOT NULL, ) NOT NULL, CONSTRAIN…
今天把notice表中的content字段改为long字段后,含有该字段的使用CTE的查询语句报错了.提示一下错误 ### Cause: java.sql.SQLException: 流已被关闭 ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17027]; 流已被关闭; nested exception is java.sql.SQLException: 流已被关闭] with root cause…
周末这天手痒,正好没事干,想着写一个分页的例子出来给大家分享一下. 这个案例分前端和后台两部分,前端使用面向对象的方式写的,里面用到了一些回调函数和事件代理,有兴趣的朋友可以研究一下.后台的实现技术是将分页Pager作为一个实体对象放到domain层,当前页.单页数据量.当前页开始数.当前页结束数.总数据条数.总页数都作为成员属性放到实体类里面. 以前项目数据库用的是oracle,sql语句的写法会从当前页开始数到当前页结束数查询数据.刚刚在这纠结了很长时间,查询到的数据显示数量总是有偏差,后来…
原文链接:孤傲苍狼 一.一对一关联 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…
关于这个问题,记录下我的解决方法,希望对有同样困惑的朋友,有所帮助. 问题描述: 我在做mybatis从mysql里模糊查询时,如果模糊的关键词是字母的话,可以查出来.如果模糊的关键词是汉字的话,查不出来.字母可以汉字却不可以,问题肯定出在编码上,可是是哪一块的编码呢? a.workspace:我设置的是utf-8,此能保证我这个页面的字符编码是u8格式,跟它无关. b.url链接上:这是我的链接地址:<property name="url" value="jdbc:m…
Mybatis提供了关联查询映射的功能. 一.一对一关联…
实际项目中的,接口对外VO  会出现 一对一 和 一对多的情况,举例:小区 下面有 楼栋  ,楼栋 下面有 房屋    ,   房屋里面又房间 小区Vo  : districtVo { id: name: List<buildVo> builds } 楼栋Vo :buildVo{ id; name; did; List<apartmentVo> apartments } 房屋Vo :apartmentVo{ id: name: List<RoomVo> } ......…
前言:本文档使用的是 SpringBoot,如果是 Spring 还需要在 MyBatis 配置 xml 中配置拦截器,并且 PageHelper 是针对 MyBatis 的,MyBatis 的集成不在本文档中叙述,请先集成 MyBatis. 一.引入PageHelper分页插件 引入的方式有两种,可以是导入Jar包,也可以使用 Maven 来构建,本文档将使用 Maven 来构建项目,如果你希望使用导入Jar包的方式进行集成,请从下面的链接下载Jar包: https://oss.sonatyp…
1.直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中. 2.CONCAT()函数 MySQL的 CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一. 3.使用mybatis标签<bind value='' name=''/> 4.在mybatis中xml文件中配置 name LIKE '%${name}%' 或者是 address LIKE &quo…
Mybatis 实现多表查询方式: (1)业务装配.对两个表编写单表查询语句,在业务(Service)把查询的两个结果进行关联. (2)使用Auto Mapping特性,在实现两表联合查询时通过别名完成映射. (3)使用 MyBatis 的<resultMap>标签进行实现. 多表查询时,类中包含另一个类的对象的分类 (1)单个对象,(2) 集合对象.…
一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*,user.username,user.sex FROM orders,USER WHERE orders.user_id = user.id 使用resultType实现 一对一查询映射的pojo 创建pojo包括 订单信息和用户信息,resultType才可以完成映射.创建OrderCustom作…
Jeecg-Mybatis版本代码生成器演示视频 http://pan.baidu.com/share/link?shareid=243717&uk=2668473880   简要说明  JEECG[J2EE Code Generation]  代码生成:根据表生成对应的Bean,Service,Dao,Action,XML,JSP等,增删改查功能直接使用,实现了快速开发  jeecg-mybatis-framework,采用SpringMVC+Mybatis等主流框架  支持数据库: Mysq…