mybatis动态sql

Mybatis学习日志二

▼魔方 西西 提交于 2019-11-29 00:49:56
一、动态sql   1、动态SQL:if 语句    <select id="selectUserByUsernameAndSex" resultType="user" parameterType="com.ys.po.User"> select * from user where <if test="username != null"> username=#{username} </if> <if test="username != null"> and sex=#{sex} </if> </select>   2、动态SQL:if+where 语句 <select id="selectUserByUsernameAndSex" resultType="user" parameterType="com.ys.po.User"> select * from user <where> <if test="username != null"> username=#{username} </if> <if test="username != null"> and sex=#{sex} </if> </where> </select>   3、动态SQL:if+set 语句 <!-- 根据 id 更新 user 表的数据 --> <update id="updateUserById"

动态sql语句、逆向工程(generator)、分页助手(pagehelper)

谁说我不能喝 提交于 2019-11-29 00:48:01
1.动态sql语句 if if where 配合使用 <select id="selectByWhere" resultType="com.alibaba.wlq.bean.Users"> select * from users <where> <if test="name!=null and name !=''"> and name = #{name} </if> <if test="sex!=null and sex!=''"> and sex = #{sex} </if> </where> </select> where的功能是在满足条件的第一个sql语句前面添加where,如果第一个满足条件的sql语句前面有and或者or,那么where标签的功能就是替换掉它 if set配合使用 <update id="updateUsers"> update users <set> <if test="name!=null and name !=''"> name = #{name}, </if> <if test="age>0"> age = #{age}, </if> <if test="sex!=null and sex!=''"> sex = #{sex}, </if> </set> where id = #{id} </update>

第三节:动态SQL

微笑、不失礼 提交于 2019-11-28 19:04:28
  在说动态SQL之前,先说说我们之前使用用什么执行SQL语句呢?答案就是JDBC。回想之前在使用传统JDBC的时候,在操作复杂的SQL语句的时候,我们如果没有仔细的话,那么就会导致出错,比如SQL语句结束的时候可能多加了一个或者空格。因此,Mybatis提供一种功能:MySQL动态查询,其中涉及的标签有如下: if, choose, when, otherwise, trim, where, set, foreach标签。利用这些标签可以解决这些很烦的问题。下面我一一来介绍吧。 一:if标签 (简单条件判断) <select id="findUserById" parameterType="UserPo.User" resultType="UserPo.User"> select * from user WHERE <if test="sex!=null"> sex=#{sex} </if> <if test="id!=null"> and id=#{id} </if> </select> View Code 解析:        看见WhERE后面有一个标签if了么?如果我们没有满足test这里面的条件,比如sex!=null和id!=null,那么才能拼接成 select * from user where sex = ? and id =? 之后根据对应的参数

MyBatis开发重点知识

末鹿安然 提交于 2019-11-28 16:35:18
1.1 为什么需要 ORM 框架? 传统的 JDBC 编程存在的弊端: ü 工作量大,操作数据库至少要 5 步; ü 业务代码和技术代码耦合; ü 连接资源手动关闭,带来了隐患; MyBatis 前身是 iBatis, 其源于“ Internet ”和“ ibatis ”的组合,本质是一种半自动的 ORM 框架,除了 POJO 和映射关系之外,还需要编写 SQL 语句; Mybatis 映射文件三要素: SQL 、映射规则和 POJO ; 1.2 MyBatis 快速入门 步骤如下: 加入 mybatis 的依赖,版本 3.5.x 添加 mybatis 的配置文件,包括 MyBatis 核心文件和 mapper.xml 文件 场景介绍:基于 t_user 表单数据查询、多数据查询; 编写实体类、 mapper 接口以及 mapper xml 文件; 编写实例代码:com.enjoylearning.mybatis.MybatisDemo. quickStart 核心类分析: SqlSessionFactoryBuilder :读取配置信息创建 SqlSessionFactory ,建造者模式,方法级别生命周期; SqlSessionFactory :创建 Sqlsession ,工厂单例模式,存在于程序的整个生命周期; SqlSession :代表一次数据库连接,一般通过调用

07-接下来安排

[亡魂溺海] 提交于 2019-11-28 11:09:11
mybatis 中的连接池以及事务控制(原理部分链接,应用部分会用) mybatis中连接池使用及分析 Mybatis事务控制的分析 mybatis基于 XML 配置的动态 SQL 语句使用(会用即可) mappers配置文件中的几个标签: < if > < where > < sql > mybatis中的多表操作(掌握应用) 一对多 一对一 多对多 来源: https://www.cnblogs.com/zuiren/p/11406112.html

mybatis的SQL映射(加强)

佐手、 提交于 2019-11-28 04:52:02
1.SQL映射器Mapper   a) 引入MyBatis基于动态代理机制,让我们无需再编写Dao的实现。   传统Dao接口,现在名称统一以Mapper结尾,还有我们映射器配置文件要和映射器在同一个包。   b) 映射器使用步骤 i. 根据数据库表创建domain类(User.java) ii. 根据domain类创建Mapper接口(UserMapper.java)   增删改查和一些其他的方法   可以在Mapper的方法上面通过注解来写SQL,但是不建议使用 iii. 编写配置xml映射文件(UserMapper.xml)   SQL语句标签的id必须和接口中方法的名字一致 iv. 获取session—>session获取Mapper--> mapper调用方法 高级查询功能   a) 模糊查询拼接字符串的时候用concat来拼接 like concat(“%”,#{name},“%”)   b) >=可以正常使用,而<=不能,需要对” <”进行一个转译”<”,但是开发时可能很多的<符号,就是CDATA断来表示<![CDATA[条件]]>   c) 多条件查询的时候,在xml映射文件里面使用一个<where>标签后会将后面的第一个and自动转换成where   d) 条件的抽取   <sql id=”sqlWhere”>查询条件</sql>,然后在SQL语句里引入这个条件

mybatis

南笙酒味 提交于 2019-11-27 23:39:46
一.基本认识 二.hello,mybatis 2.1 导包 2.2 基本准备(表,domain) 2.3 创建配置文件 jdbc.properties:数据库的参数 mybatis-config.xml:mybatis的核心配置 ProductMapper.xml:sql语句 2.4 测试 三.工具类与CRUD 3.1 准备MyBatisUtil 3.1 完成CRUD 3.1.1 productMapper.xml 3.1.1 productDao中完成功能 四.细节处理 4.1 添加的对象返回id 4.2 别名的配置 4.3 日志的处理 4.4 #与$的区别(面试题) 五.批量操作与动态SQL 5.1 批量添加 5.2 批量删除 5.3 动态修改 今日扩展 连接池 mysql的数据库引擎 一.基本认识 mybatis是一个ORM框架 ORM:对象关系映射 mybatis对jdbc的重复代码进行了封装,依然需要自己写sql(比jdbc开发快,比jpa性能好) 二.hello,mybatis 2.1 导包 mybatis核心包 mybatis/mybatis-3.2.1.jar mybatis的依赖包 mybatis/lib/*.jar jdbc驱动包 mysql-connector-java-5.1.26-bin.jar 2.2 基本准备(表,domain) 库(mybatis)

Mybatis

天大地大妈咪最大 提交于 2019-11-27 10:12:21
动态 SQL MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中。 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元素需要来了解。MyBatis 3 大大提升了它们,现在用不到原先一半的元素就可以了。MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素。 if choose (when, otherwise) trim (where, set) foreach if 动态 SQL 通常要做的事情是有条件地包含 where 子句的一部分。比如: <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like

【深入浅出MyBatis系列三】Mapper映射文件配置

走远了吗. 提交于 2019-11-27 10:11:44
#0 系列目录# 深入浅出MyBatis系列 【深入浅出MyBatis系列一】MyBatis入门 【深入浅出MyBatis系列二】配置简介(MyBatis源码篇) 【深入浅出MyBatis系列三】Mapper映射文件配置 【深入浅出MyBatis系列四】强大的动态SQL 【深入浅出MyBatis系列五】SQL执行流程分析(源码篇) 【深入浅出MyBatis系列六】插件原理 【深入浅出MyBatis系列七】分页插件 【深入浅出MyBatis系列八】SQL自动生成插件 【深入浅出MyBatis系列九】改造Cache插件 【深入浅出MyBatis系列十】与Spring集成 【深入浅出MyBatis系列十一】缓存源码分析 【深入浅出MyBatis系列十二】终结篇:MyBatis原理深入解析 在mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql 。 #1 insert, update, delete 的配置及使用# 相信,看到insert, update, delete, 我们就知道其作用了,顾名思义嘛,myabtis 作为持久层框架,必须要对CRUD啊。好啦,咱们就先来看看 insert, update, delete 怎么配置,

Mybatis九(动态sql)

你离开我真会死。 提交于 2019-11-27 07:18:15
if标签 接口(EmployeeMapper.java) package com.fish.dao; import java.util.List; import com.fish.pojo.Employee; public interface EmployeeMapper { /** * 动态sql if拼接 * @Author ZFH * @Date 2019年7月29日 */ public List<Employee> selEmployeeByConationIf(Employee employee); } 配置文件(EmployeeMapper.xml) <?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"> <mapper namespace="com.fish.dao.EmployeeMapper"> <select id="selEmployeeByConationIf" resultType="com.fish.pojo.Employee"> select id, last_name lastName, email, gender