记一笔MyBatis的坑

记一笔MyBatis的坑

1、sql查询concat()连接函数xml运行查询乱码

1 select concat(CONVERT(round(count(case when sq.LOANOVERDUE = ‘Y‘ then 1 else null end) / count(1) * 100, 2), char)‘%‘) bll
2 FROM fact_dkxx sq

由于连接的字符串中包含数字与百分比字符串,数据类型不一致,在xml中查询返回内容乱码,因此需要将数字使用CONVERT(number,char)函数转换字符类型连接。

2、MyBatis中 <if test="isfk != null and isfk != ‘ ‘ and isfk==‘1‘ ">标签过滤不执行

在mybatis中执行会过滤掉该if判断,但程序不报错会继续执行

应:将单个的字符放入双引号里面,外层用单引号    <if test=‘isfk == "1" ‘>

或者添加toString()方法    <if test="isfk == ‘1‘.toString() ">

原因分析:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’1’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。

原文地址:https://www.cnblogs.com/tangjiang-code/p/12073531.html

时间: 2024-10-09 00:46:35

记一笔MyBatis的坑的相关文章

记 Maven 本地仓库埋坑之依赖包为何不能用

记一次 Maven 本地仓库埋坑之 Verifying Availability 背景 某 Java 后端项目使用 maven 构建,因为某些原因,某些依赖库下载不了,直接找其它人索要了他电脑上的 maven 本地仓库里的依赖包. 然后直接拷贝到我电脑的本地 maven 仓库里,但构建项目时,发现,仍旧报找不到依赖包也下载不了的错误,导致项目构建不起来. 异常信息 以上是背景,下面是构建过程出现的一些异常: The Pom for xxx.jar is missing, no dependenc

给定一个数值,输出符合中国人习惯的读法--记一道笔试题

题目:给定一个数字,最大小于一万亿,输出符合中国人习惯的读法,例如: a.12输出:十二 b.102输出:一百零二 c.1002输出:一千零二 d.112输出:一百十二 e.10112输出:一万零一百十二 f.120000000:一亿二千万 g.11021002:一千一百零二万一千零二 h.11020102:一千一百零二万零一百零二 i.1000001:一百万零一 j.1000000001:十亿零一 嗯,一道笔试题,解的很没有节操,没有太好的思路,只能尽力抽取翻译过程中的共有代码,尽量写的不那么

MyBatis踩坑之SQLProvider转义字符被删除问题

目录 踩坑背景 问题描述 原因追踪 解决方案 方法一 方法二 踩坑背景 项目架构:Spring Boot + MyBatis + MySQL. 使用MyBatis作为ORM框架,jdbc驱动使用的是mariadb-java-client. <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version

记一次mybatis bindingexception 问题排查

看到的错误信息如出一辙都是这样的:Method threw 'org.apache.ibatis.binding.BindingException' exception.Invalid bound statement (not found): **.dao.**Dao.select 1.考虑返回值类型是否不匹配,一顿修改,@Results 也使用到. 最终无果. 2.开始各种百度,先申明本人使用的方式注解方式, 并非最常用的xml方式. 百度内容大都雷同,检查包名,类名,方法名 是否映射.无果.

SpringBoot整合mybatis踩坑

springboot整合mybaits过程中,调用接口时报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 分析了下报错堆栈信息,认为是找不到*Mapper.xml导致,网上搜索下他人博客,以为是IDEA导致*Mapper.xml无法生成,于是检查了编译生成的classes目录(classpath),发现*Mapper.xml是存在的,IDEA并没有问题. 就在百思不得其解时,仔细

记一次mybatis&lt;if&gt;标签的问题

前言 到底还是没理解清楚的锅~~~~搞了好久...啊啊啊啊 错误: There is no getter for property named 'name' in 'class java.lang.Long' org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property

IDEA+Maven+Mybatis 巨坑:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.rao.mapper.UserMapper.findAll

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.rao.mapper.UserMapper.findAll at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:227) at org.apache.ibatis.binding.MapperMethod.<init&

JavaScript新手学习笔记4——我记不住的几个坑:短路逻辑、按值传递、声明提前

1.短路逻辑 逻辑运算中,如果前一个条件已经可以得出最终结论,则后续所有条件不再执行!这里的逻辑运算指的是逻辑与和逻辑或. 我们要理解逻辑与是两个条件都为真的时候,才为真,如果第一个就是假的,那么后面一个也不用执行了.逻辑非是两个条件中有一个是真,则结果为真,所以只要第一个为真,那么结果为真,后面一条语句就不用执行了.于是又如下例题: console.log(2&&3); //3 console.log(2||3); //2 console.log(0&&1); //0 c

记dynamic的一个小坑 -- RuntimeBinderException:“object”未包括“xxx”的定义

创建一个控制台程序和一个类库, 在控制台创建一个匿名对象.然后再在类库中訪问它.代码例如以下: namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var obj = new { Id = 1 }; var c = new ClassLibrary1.TestClass(); c.Test(obj); Console.ReadLine(); } } } namespace ClassL