Mybatis if判断的坑】的更多相关文章

具体情况参考这两篇文章: http://cheng-xinwei.iteye.com/blog/2008200 http://www.cnblogs.com/tv151579/p/3297691.html…
不要在心情糟糕的时候写代码,能坑死自己. 今天码代码的时候出现一个问题,脾气暴躁到砸桌子, 在Mybatis传入参数为String并且用 if test 判断的过程中发现 <if test="dwsh != null and dwsh != ''"> </if> 时会报 : There is no getter for property named 'dwsh' in 'class java.lang.String' 的错误 在一顿折腾之后发现 这个错误出现的地…
1.使用“==”比较 字符类型 的值 用“==”比较的使用场景: 不管你用的什么类型的变量,只要变量的值是字符类型就用“==” 产生原因: 在mybatis中如果<if>标签用一个“=”判断左右两边的值是否相等,则mybatis会把“=”两边的值自动拆箱成基础数据类型(Number类型) 示例如下: 参数:String queryKwd = "a"; <select id="getFactoryInfoList" resultMap="B…
http://cheng-xinwei.iteye.com/blog/2008200 最近在项目使用mybatis中碰到个问题 <if test="type=='y'"> and status = 0 </if> 当传入的type的值为y的时候,if判断内的sql也不会执行,抱着这个疑问就去看了mybatis是怎么解析sql的.下面我们一起来看一下mybatis 的执行过程.  DefaultSqlSession.class  121行 public void…
Mybatis的CRUD小Demo 为方便查看每次的增删改结果,封装了查询,用来显示数据库的记录: public static void showInfo(){ SqlSession session = getSqlSesion(); String sql = "me.gacl.mapping.userMapper.getUsers"; List<Map<String,String>> users = session.selectList(sql); for(M…
在做开发的时候遇到这样一个问题:当传入的type的值为y的时候,if判断内的sql也不会执行.   <if test="type=='y'">   and status = 0   </if> 仔细想想:mybatis是使用的OGNL表达式来进行解析的,在OGNL的表达式中,'y'会被解析成字符,因为java是强类型的,char 和 一个String 会导致不等.所以if标签中的sql不会被解析. 所以,需要解决这个问题,只需要把代码修改成:       <…
where语句中我们经常会做一些字符串的判断,当传入的字符串参数为纯数字时,在mybatis的条件语句test里匹配全数字字符串需要注意会有如下现象: 所以里面的字符串需要加单引号,mybatis是匹配不到的.…
MyBatis 一级缓存(MyBaits 称其为 Local Cache)无法关闭,但是有两种级别可选: package org.apache.ibatis.session; /** * @author Eduardo Macarron */ public enum LocalCacheScope { SESSION, //session 级别的缓存 STATEMENT //statement 级别的缓存 } 1)session 级别的缓存 在同一个 sqlSession 内,对同样的查询将不再…
换了份工作,开始接触Mybatis,开一篇文章记录一下自己遇到的坑 2018-06-20 今天遇到了一个问题,编好的sql语句在数据库可以执行但是写到程序里边就GG,什么问题呢?一直纠结在程序哪里写错了,找的快要死了!!! select t.* from table_B where t.usr_id in (#{userIds}) sql语句就是如上这句话,参数是经过处理的原参数为(XXX,YYY,OOO)类似模式,处理之后('XXX','YYY','OOO') 报错为什么呢?想通了很简单,想不…
总所周知,localdatetime是jdk8 推出的关于日期计算非常方便地一个类,一旦开始用上就欲罢不能.但是在使用的时候,坑还是蛮多的. 一.mybatis与LocalDatetime 如果直接将实体里面所有的Date类型换成LocalDatetime之后,运行程序是会报异常的.此时,可以加入以下依赖: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-typehandlers…
最近使用 Mybatis 遇到了一个奇怪的问题,前端传了一个数字字符串(type = "1") ,我做了如下判断: <if test=" type == '1' "> </if> 就这样系统无情的告诉我这样无法被解析,原因是字符串和数字无法判断相等!Are you kidding me?我这明明写的是字符串呀! 后来,跟踪了下源码,发现 '1' 确实被直接当成数字处理了,查阅了一些资料,原来 MyBatis 是使用的 OGNL表达式来进行解析…
事件的原因是这样的,需求是按条件查数据然后给前端展示就行了,写的时候想着挺简单的,不就是使用 MyBatis 动态 SQL 去查询数据吗? 现实还是很残酷的,等我写完上完 UAT 后,前端同学说根据state查的数据与理想的数据不一致,这个state当时设计时只有两个值:0和1. /** * 数据状态 */ @Range(min = 0, max = 1, message = "状态只能为0(未处理),1(已处理)") private Integer state; 理想情况下通过前端传…
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决. <![CDATA[   ]]> 是什么,这是XML语法.在CDATA内部的所有内容都会被解析器忽略. 如果文本包含了很多的"<"字符 <=和"&"字符--就象程序代码一样,那么最好把他们都放到CDATA部件中. 但是有个问题…
开园这么多年了也没写几篇文章,现在想想光看别人的也不行啊,咱也自己写写,就写这天我我在做spring mvc与mybatis的集成时遇到的问题 1 spring与mybatis的集成 这个相信大家都弄过吧,不过我还是要说说.首先咱们得先把项目大体的架子搭起来,本人用的IDEA,废话不多说来上图 这是我的spring和mybatis的项目的结构,这我相信大家都能看明白,不用我多说什么.其实最主要的还是applicationContext.xml文件 <?xml version="1.0&qu…
1. <?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"> <select id…
1.接口类(指*Mapper.java)在spring中注册的问题 当控制台打印如下信息: A component required a bean named '*Mapper' that could not be found. 意思是spring找不到这个bean,也就是说这个类没有在spring中注册.亲测可用的解决办法有两个: (1)给接口类加上@Mapper注解 加@Repository或者@Component都不管用,必须得@Mapper注解才行. (2)在启动类上加@MapperSc…
sql中的case when 有点类似于Java中的switch语句,比较灵活,但是在Mysql中对于Null的处理有点特殊 Mysql中case when语法: 语法1: CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE 语法2: CASE WHEN search_condition THEN s…
最近在项目中需要使用oracle+mybatis批量插入数据,因为自增主键,遇到问题,现记录如下: 一.常用的两种sql写法报错 1.insert ... values ... <insert id="batchInsert1" parameterType="java.util.List" useGeneratedKeys="false"> insert all <foreach collection="list&qu…
== 与 equals()的联系: ==: 我们都知道Java中 == 对用于基础数据类型(byte, short, int, long, float, double, boolean, char)判断时, 是直接对变量值的比较. 而对于引用类型变量则是对变量地址的比较. equals(): 我们可以通过查阅源码看到Object类中equals()方法依然是直接对地址的比较 当然, 常见的Java类都重写了equals方法, 如封装类, Date等. 这里我们只说下Integer和String重…
场景: 1.同一个事务中 2.使用mybatis执行同一个sql @Transactional(rollbackFor = { Exception.class }) public void getInfo() { SysUser user = sysUserDao.selectByPrimaryKey(111);//SysGrade=1 user .setSysGrade(0); SysUser sysUser = sysUserDao.selectByPrimaryKey(111); Syst…
先放出我遇到的出错信息,真的出错了可以先看看出错信息,就能更加高效准确的搜索到信息 我的报错日志: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'loginController': Unsatisfied dependency expressed through field 'adminServiceimpl'; nested exception i…
<?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.koukay.mapper.AppPackag…
http://blog.csdn.net/jinzhencs/article/details/50595476…
<select id="isTableExist" parameterType="string" resultType="int"> select count(*) from information_schema.TABLES where table_name = #{tableName}</select>…
<if test="type!=null and type!=''"> AND type = #{type} </if>…
<if test="params.length()!=2">…
这种写法是错误的:在OGNL的表达式中,'true'会被解析成字符,因为java是强类型的 <if test="flag=='true' "> AND ho.id = #{id} </if> 应该这样写: <if test='flag == "true"'>AND ho.id = #{id}</if>…
首先,贴一个好文.把mybatis中的<if></if>的条件扒到源码分析了一遍.PS:目前还看不懂... http://cheng-xinwei.iteye.com/blog/2008200 java开发第十一天. 再次写xml中sql语句的时候,好奇<if></if>这个标签的作用.因此百度了一下.java组老大分配给我的那个同事也说二把刀.不知道怎么回事儿.然后自己查了一下. 查到了上边那篇文章 <mybatis if 判断的坑>有空后再问…
Spring Boot + Mybatis 配置多数据源 Mybatis拦截器,字段名大写转小写 package com.sgcc.tysj.s.common.mybatis; import java.sql.Statement; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Properties;…
mybatis中的一个坑:预期:传入的Record中会生动填入在db中生成的id值. 使用  insertUseGeneratedKeys插入数据时,如果id字段不是AUTO_INCREMENT,则不会生成新的id package tk.mybatis.mapper.common.special; import org.apache.ibatis.annotations.InsertProvider; import org.apache.ibatis.annotations.Options; i…