聊聊mybatis sql的括号问题
目录
- mybatis sql的括号问题
- mybatis多层括号(超过三层)解析不了
mybatis sql的括号问题
因为一段sql 要关联 A,B,C三个表,查三个表里的数据
一开始写的是
select * from a,b,c
结果出来很多重复数据
而三个表是用id关联的
所以改成
select * from a where id in (select id from a,b,c 关联条件)
然后在mybatis里在写级联查询
把B,C表里的数据以数组的形式查出来
ok了 避免了数据重复一大堆
但是人说,级联查询,缺点: 查询速度慢
如果用exists 查的比较快
mybatis多层括号(超过三层)解析不了
加<![CDATA[ ]]>即可,要么用存视图,应用在局部也可
<select id="selectfirm" resultType="com.esteel.web.entity.CusFirmBean" parameterType="com.esteel.web.beanvo.CusFirmBeanVo"> <![CDATA[ select a.*,a.customer_name as customerName from tb_cus_firm a where a.market_key = #{marketKey} order by customer_key ]]> </select>
<select id="getEmailCount" parameterType="map" resultMap="account1Map"> SELECT * FROM TB_CUS_USER WHERE 1=1 <if test="EMAIL!=null and EMAIL!=''"> and EMAIL=#{EMAIL} </if> <if test="CUS_TRADE_KIND!=null and CUS_TRADE_KIND!=''"> and CUS_TRADE_KIND =#{CUS_TRADE_KIND} </if> <if test="CUS_USER_KEY!=null and CUS_USER_KEY!=''"> and cus_user_key <![CDATA[<>]]> #{CUS_USER_KEY} </if> </select>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
mysql+mybatis实现存储过程+事务 + 多并发流水号获取
数据库存储过程 DROP PROCEDURE IF EXISTS `generate_serial_number_by_date`; CREATE PROCEDURE `generate_serial_number_by_date`( IN param_key varchar(100), IN param_org_id bigint, IN param_period_date_format varchar(20), OUT result bigint, OUT current_datestr v
-
利用Java如何获取Mybatis动态生成的sql接口实现
目录 前言 1.编写xml: SqlGenarate.mapper.xml 2.定义接口 3.实现接口 总结 前言 如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦.通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中. 目的:利
-
关于MyBatis中SqlSessionFactory和SqlSession简解
目录 [1]SqlSessionFactoryBuilder [2]SqlSessionFactory SqlSessionFactory 接口源码 SqlSessionFactory 有六个方法创建 SqlSession 实例 [3]非线程安全的SqlSession 永远不要在一个被管理域中引用SqlSession 语句执行方法 立即批量更新方法 事务控制方法 本地缓存 使用映射器 映射器注解 映射注解示例 mybatis官网中文文档:https://mybatis.org/mybatis-3
-
Mybatis sqlMapConfig.xml中的mappers标签使用
目录 sqlMapConfig.xml中的mappers标签 mappers(映射配置) 1.1:通过resource加载单个映射文件 1.2:通过mapper接口加载单个映射文件 1.3:批量加载mapper(推荐使用) sqlmapconfig核心标签说明以及配置 配置项详解 配置示例 sqlMapConfig.xml中的mappers标签 mappers(映射配置) 1.1:通过resource加载单个映射文件 < !– 加载映射文件 –> < mappers> < !
-
Mybatis中resultMap标签和sql标签的设置方式
目录 resultMap标签和sql标签的设置 1.项目目录 2.数据库中的表的信息 3.配置文件的信息 4.User类 5.IUserDao接口 6.MybatisTest 7.运行结果 resultMap标签的使用规则 自定义结果映射规则 association联合查询 使用association进行分布查询 collection分步查询 resultMap标签和sql标签的设置 1.项目目录 2.数据库中的表的信息 3.配置文件的信息 1.SqlMapConfig.xml文件 <?xml
-
使用Mybatis-Plus时的SqlSessionFactory问题及处理
目录 使用Mybatis-Plus时的SqlSessionFactory问题 贴一下这两个类的源码,看一眼就明白了 还有MybatisSqlSessionFactoryBean的 springboot+mybatis-plus报错Property'sqlSessionFactory'or'sqlSessionTemplate'are required 使用Mybatis-Plus时的SqlSessionFactory问题 前些日子工作中出现一个问题,项目中使用了MybatisPlus,然后出现了
-
聊聊mybatis sql的括号问题
目录 mybatis sql的括号问题 mybatis多层括号(超过三层)解析不了 mybatis sql的括号问题 因为一段sql 要关联 A,B,C三个表,查三个表里的数据 一开始写的是 select * from a,b,c 结果出来很多重复数据 而三个表是用id关联的 所以改成 select * from a where id in (select id from a,b,c 关联条件) 然后在mybatis里在写级联查询 把B,C表里的数据以数组的形式查出来 ok了
-
聊聊Mybatis中sql语句不等于的表示
Mybatis sql语句不等于的表示 如果直接写 select * from user where id <> 217; mybatis就会报语法错误,<>特殊字符需要转义 如下 select * from user where id <> 217; 使用Mybatis的时候,特殊字符需进行转义,如 <> <> & & ' ' " " Mybatis 特殊符号(大于,小于,不等于)及常用函数
-
结合Mybatis聊聊对SQL注入的见解
目录 Mybatis聊聊对SQL注入的见解 1.sql注入是什么 2.sql注入实例 (1)特殊符号,如 ' 和 .等 (2)sql语句的注入 (3)通过sql语句的in和order by进行注入 3.mybatis框架下如何解决sql注入问题 (1)用#{param}替换所有的${param} (2)对用户输入的数据进行sql注入校验 (3)要对用户的权限进行区分 (4)更高级别的验证 一种常见的Mybatis的SQL注入 一.场景重现 二.代码展示 三.模拟请求&回应结果 四.小结一下 My
-
SpringMVC4+MyBatis+SQL Server2014实现数据库读写分离
前言 基于mybatis的AbstractRoutingDataSource和Interceptor用拦截器的方式实现读写分离,根据MappedStatement的boundsql,查询sql的select.insert.update.delete,根据起判断使用读写连接串. 开发环境 SpringMVC4.mybatis3 项目结构 读写分离实现 1.pom.xml <dependencies> <dependency> <groupId>junit</grou
-
MyBatis SQL xml处理小于号与大于号正确的格式
当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序错误. 这样的问题在iBatiS中或者自定义的xml处理sql的程序中经常需要我们来处理.其实很简单,我们只需作如下替换即可避免上述的错误: 原符号 < <= > >= & ' " 替换符号 < <= &
-
MyBatis sql中test如何判断Boolean
目录 mybatis sql中test判断Boolean 三种方式 if标签判断boolean类型的写法 例子方法 在入参flag不为空的情况下直接判断 mybatis sql中test判断Boolean 三种方式 <select id="queryAddress" resultType="com.caox.model.Address"> select id, address, remark from address wh
-
聊聊Mybatis反射之ObjectWrapper的使用
目录 获取类属性的类MetaClass ObjectWrapper 总结 获取类属性的类MetaClass MetaClass主要是用于获取类的属性,它的构造方法中通过ReflectorFactory工厂把class封装成Reflector private MetaClass(Class<?> type, ReflectorFactory reflectorFactory) { this.reflectorFactory = reflectorFactory; this.reflector =
-
Mybatis SQL运行流程源码详解
概述 源码就是能够被用来执行,生成机器能够识别的代码,通过开源源码,可以引用其功能. 重要性 1.mybatis中的sql执行,不仅要知道返回的结果是什么,还需要知道这结果是怎么来的,经过了怎样的处理,只有知道了这样的原理,碰到问题才能更好的知道问题出在那个环节. 2.能更好的扩展应用程序,可以做到代码的复用,减少开发成本和时间. 3.学习其中的设计思想能够在其他应用得已应用. 步骤 源码阅读,可以从测试用例着手,每个源码,多有大师们写的测试用例,咱们可以用大师们写的测试用例进行相关功能的测试,
-
详细聊聊Mybatis中万能的Map
目录 万能的Map demo map 实现add user map 实现通过id查询 多个参数可以使用Map进行传参 总结 万能的Map 假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们需要考虑使用Map 简单来说,map你用什么参数就写什么参数,而实体类需要写所有参数. map不需要名称完全对应,通过键的映射取值,实体类必须要求和实体类中属性名字一样 map传递参数,直接在sql中取出key即可 [parameterType="map"] 对象传递参数,直接在sql中取对
-
详细聊聊关于sql注入的一些零散知识点
目录 零.本文涉及知识点 一.sqlmap写一句马的过程(-- os-shell) 1.1 简述过程 1.2 一个小问题 二.堆叠注入: 2.1 什么是堆叠注入 2.2 如何判断存在堆叠注入? 2.3 局限性 三.union injection(联合注入) 3.1 原理 3.2 与堆叠注入的区别 四.常见的sql注入绕过姿势 4.1 Waf特性: 4.2 绕waf的核心思路: 4.3 常见的思路 五.Sql注入预编译与常见绕过姿势 5.1 概述 5.2 具体方式 5.2.1 ASC/DESC 5
随机推荐
- 分布式Hibernate search详解
- mysql 5.7 安装配置方法图文教程
- JS 实现完美include载入实现代码
- redis集群搭建_动力节点Java学院整理
- Web开发使用Angular实现用户密码强度判别的方法
- JS数组排序方法实例分析
- java Jersey框架初体验
- iOS11适配工作及导航栏影藏返回文字的解决方法
- asp.net 产生随机颜色实现代码
- Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
- asp.net中C#获取字符串中汉字的个数的具体实现方法
- PHP Wrapper在SAE上的应用方法
- 101个MySQL优化技巧和提示
- Go语言struct类型介绍
- 解决jquery中美元符号命名冲突问题
- 为超链接加上disabled后的故事
- java 抽象类和接口的区别详细解析
- apache 虚拟主机的配置方法
- Java Socket实现文件传输示例代码
- php防止CC攻击代码 php防止网页频繁刷新