Mybatis-学习笔记(5)动态SQL】的更多相关文章

MyBatis:学习笔记(4)——动态SQL…
通过mybatis提供的各种标签方法实现动态拼接sql. 需求:根据性别和名字查询用户 查询sql: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND username LIKE '%张%' 一.if标签 1.1 Mapper.xml文件 UserMapper.xml配置sql,如下: <!-- 根据条件查询用户 --> <select id="queryUserByWhere&q…
动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段,还可以在INSERT语句中用来判断是否插入某个字段的值 2.<where> where元素的作用是给SQL语句添加一个条件判断. 如果输出后是and 开头的,MyBatis会把第一个and忽略,当然如果是or开头的,MyBatis也会把它忽略:此外,在where元素中你不需要考虑空格的问题,My…
一.<if> 使用<if>可以根据具体情况来拼接SQL语句,使其更加灵活更加适应我们的需求. <if>的标签体中是需要拼接的语句,满足条件才会将其进行拼接. <if>标签中的test属性用于判断添加. 例如我们现在有这样一个查询需求,如果客户名不为空则按客户名模糊查询, 如果客户职业不为空,则按职业查询.如果两者都不为空则按客户名和职业查询. <select id = "findByUsernameOrJobs" resultMap…
一.查询给定集合中员工id对应的所有员工信息 示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import org.apache.ibatis.annotations.Param; import java.util.List; public interface EmployeeMapper { //查询员工id在给定集合中的所有员工信息 public List<Employee> getEmpsByC…
示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import java.util.List; public interface EmployeeMapper { //携带了哪个字段查询条件就带上这个字段的值 public List<Employee> getEmpsByConditionIf(Employee employee); public List<Employee> getEmps…
示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; public interface EmployeeMapper { public void updateEmp(Employee employee); public void updateEmployee(Employee employee); } mapper定义: <?xml version="1.0" encoding="U…
choose (when, otherwise):分支选择:带了break的swtich-case 示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import java.util.List; public interface EmployeeMapper { public List<Employee> getEmpsByConditionChoose(Employee employee); } ma…
trim标签体中是整个字符串拼串后的结果.prefix="" 前缀: prefix给拼串后的整个字符串加一个前缀prefixOverrides="" 前缀覆盖: 去掉整个字符串前面多余的字符suffix="" 后缀: suffix给拼串后的整个字符串加一个后缀suffixOverrides="" 后缀覆盖:去掉整个字符串后面多余的字符 示例代码: 接口定义: package com.mybatis.dao; import co…
MyBatis:学习笔记(4)——动态SQL 如果使用JDBC或者其他框架,很多时候需要你根据需求手动拼装SQL语句,这是一件非常麻烦的事情.MyBatis提供了对SQL语句动态的组装能力,而且他只有几个基本的元素,十分简单明了,即大量的判断都可以在MyBatis的映射XML文件里面配置,已达到我们需要大量代码才可以实现的功能. 动态SQL元素 IF元素 IF元素是我们最常用的判断语句,相当于Java中的IF语句.它常常与test属性联合使用. <select id="findOffice…
MyBatis中对数据库的操作,有时要带一些条件,因此动态SQL语句非常有必要,下面就主要来讲讲几个常用的动态SQL语句的语法 MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwise) trim where set foreach 1.if 对属性进行判断,如果不为空则执行判断条件 <select id="selectByCriteria" parameterType="com.mucfc.dto.Student" …
10.动态SQL 10.1 什么是动态SQL 动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦. 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句…
8       动态sql 8.1     什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 8.2     需求 用户信息综合查询列表和用户信息查询列表总数这两个statement的定义使用动态sql. 对查询条件进行判断,如果输入参数不为空才进行查询条件拼接. 1.3     mapper.xml 8.4     测试代码 8.5     sql片段 8.5.1     需求 将上边实现的动态sql判断代码块抽取出来,组成一个s…
1. 动态sql 动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装.就拿上一篇博文中对用户的综合查询一例来说: select * from user where user.sex = #{user.sex} and user.username like '%${user.username}%' 假如这个user是null咋整?或者user.sex或者user.username为null呢?所以更严谨的做…
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [传递pojo对象] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称. 1.2 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询条件可能是综合的查询条件,不仅包括用户查询条件…
mybatis 学习笔记(二):mybatis SQL注入问题 SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵. 最常见的就是我们在应用程序中使用字符串联结方式组合 SQL 指令,有心之人就会写一些特殊的符号,恶意篡改原本的 SQL 语法的…
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但…
项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/MybatisUtil.java package util; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; i…
本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询条件可能是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如查询用户信息的时候,将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数.包装对象即Pojo类中的一个属性是另外一个pojo. 演示:根据用户名模糊查询用户信息,查询条件放到QueryVo的user属性中. 1.…
mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输入参数映射.输出结果映射) mybatis入门门槛不高,学习成本低,让程序员把精力放在sql语句上,对sql语句优化非常方便, 适用于需求变化较多项目,比如互联网项目. mybatis框架执行过程: 1.配置mybatis的配置文件,SqlMapConfig.xml(名称不固定) 2.通过配置文件,…
mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足sql语句 mybatis可将向prparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象.(输出映射) SqlMapConfig.xml(是mybatis的全局配置文件,名称不固定) 配置了数据源/事务等mybatis运行环境 配置映射文件(配置sql语句) m…
mybatis学习笔记之学习结构(1) 学习结构: 1.mybatis开发方法 原始dao开发方法(程序需要编写dao接口和dao实现类) mybatis的mapper接口(相当于dao接口)代理开发方法 mybatis配置文件SqlMapConfig.xml mybatis核心: mybatis输入映射 mybatis输出映射 mybatis的动态sql 2.高级知识 高级结果集映射(一对一/一对多/多对多) mybatis查询缓存(一级缓存/二级缓存) mybatis和spring进行整合…
mybatis学习笔记(7)-输出映射 标签: mybatis mybatis学习笔记7-输出映射 resultType 输出简单类型 输出pojo对象和pojo列表 resultMap resultMap用法 小结 本文主要解说mybatis的输出映射. 输出映射有两种方式 resultType resultMap resultType 使用resultType进行输出映射,仅仅有查询出来的列名和pojo中的属性名一致.该列才干够映射成功. 假设查询出来的列名和pojo中的属性名所有不一致.没…
博客整理 Mybatis学习笔记(一)--对原生jdbc中问题的总结 Mybatis学习笔记(二)--Mybatis框架 Mybatis学习笔记(三)--入门程序 MyBatis学习笔记(四)--入门程序(续) Mybatis学习笔记(五)--DAO开发 Mybatis学习笔记(六)--配置文件 Mybatis学习笔记(七)--输入输出映射 Mybatis学习笔记(八)--动态SQL Mybatis学习笔记(九)--一对一和一对多查询 Mybatis学习笔记(十)--多对多查询 Mybatis学…
Mybatis小白快速入门 简介 本人是一个Java学习者,最近才开始在博客园上分享自己的学习经验,同时帮助那些想要学习的uu们,相关学习视频在小破站的狂神说,狂神真的是我学习到现在觉得最GAN的老师[手动狗头],大家可自行前去学习. 导航栏 Mybatis学习笔记-第一个Mybatis程序 Mybatis学习笔记-CRUD Mybatis学习笔记-配置解析 Mybatis学习笔记-ResultMap结果集映射 Mybatis学习笔记-日志 Mybatis学习笔记-分页 Mybatis学习笔记-…
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实现 字符串代入法 cache缓存   二.SQL语句映射文件(2)增删改查.参数.缓存 MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二.SQL语句映射文件(1)resultMap MyBatis学习 之 二.SQL语句映射文件…
目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实现联合 collection聚集 使用select实现聚集 使用resultMap实现聚集 discriminator鉴别器   二.SQL语句映射文件(1)resultMap MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二.…
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载.首先建立一个名字为 MyBaits 的 dynamic web project 1. 可以创建maven项目,依赖的包mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar <!-- mybatis包 --> <depe…
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数据库连接池管理数据库. ☐ 将SQL语句硬编码到Java代码中,若SQL语句修改,需要重新编译Java代码,不利于系统维护. ☐ 将SQL语句配置在XML文件中,即使SQL变化,我们也不需要队Java代码进行重新编译. ☐ 向PreparedStatement中设置参数,对占位符号位置和设置参数值,…
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文件复制到src/main/webapp下,删掉WebContent 5.修改Deployment Assembly 6.测试 二.mybatis访问mysql 1.数据库准备 2.修改pom.xml 3.创建实体类 4.创建访问接口 5.添加映射文件 6.添加MyBatisCfg.xml配置文件,注…