关于Mybatis的几个问题
今天在用mybatis开发的时候遇到两个问题,下面一一列出并给出解决方案。
问题一
最开始我设置的实体类中有个字段如isParent为boolean类型,set和get方法是eclispe自动生成的。
private boolean isParent;
public boolean isParent() {
return isParent;
}
public void setParent(boolean isParent) {
this.isParent = isParent;
}
在xml中是这么写的
<select id="getChildrenByParentId" parameterType="java.lang.String" resultType="org.sjzcgl.common.data.CommonTree">
SELECT ID,
NAME,
CASE
WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN
'1'
ELSE
'0'
END isParent,
PARENT_ID parentId,
IS_METADATA_TYPE isMetadataType,
SFYX
FROM TREE_YJS T
WHERE T.SFYX = '1'
<if test="_parameter != null and _parameter != ''">
AND T.PARENT_ID = #{0,jdbcType=VARCHAR}
</if>
<if test="_parameter == null or _parameter == ''">
AND T.PARENT_ID IS NULL
</if>
</select>
其中CASE WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN '1' ELSE '0' END isParent ,对于isParent这个字段无论是返回的是字符串‘1’、‘0‘,还是数字1、0,又或者直接是true、false都不能转换为booean。
解决方案:将isParent修改为String类型,并且修改get方法。
private String isParent;
public void setParentId(String parentId) {
this.parentId = parentId;
}
public boolean getIsParent() {
if(this.isParent.equals("1"))
return true;
else
return false;
}
问题二
还是这个xml,入参是String类型,但是在<if>标签里面(红色部分)不识别。
<select id="getChildrenByParentId" parameterType="java.lang.String" resultType="org.sjzcgl.common.data.CommonTree">
SELECT ID,
NAME,
CASE
WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN
'1'
ELSE
'0'
END isParent,
PARENT_ID parentId,
IS_METADATA_TYPE isMetadataType,
SFYX
FROM TREE_YJS T
WHERE T.SFYX = '1'
<if test="parentId != null and parentId != ''">
AND T.PARENT_ID = #{0,jdbcType=VARCHAR}
</if>
<if test="parentId == null or parentId == ''">
AND T.PARENT_ID IS NULL
</if>
</select>
解决方案:后来查到原因,在mybatis中String参数只用了一次,就不会报错,如果第二段代码还用来判断了不为空,多次使用的话,它就会报错,经更改之后的代码如下,将参数改为_parameter,这样它就会知道,你一直使用的都是传进来的String。
<select id="getChildrenByParentId" parameterType="java.lang.String" resultType="org.sjzcgl.common.data.CommonTree">
SELECT ID,
NAME,
CASE
WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN
'1'
ELSE
'0'
END isParent,
PARENT_ID parentId,
IS_METADATA_TYPE isMetadataType,
SFYX
FROM TREE_YJS T
WHERE T.SFYX = '1'
<if test="_parameter != null and _parameter != ''">
AND T.PARENT_ID = #{0,jdbcType=VARCHAR}
</if>
<if test="_parameter == null or _parameter == ''">
AND T.PARENT_ID IS NULL
</if>
</select>
关于Mybatis的几个问题的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
- 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程
本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...
- mybatis plugins实现项目【全局】读写分离
在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...
- MyBatis基础入门--知识点总结
对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- MyBatis源码分析(一)开篇
源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...
- (整理)MyBatis入门教程(一)
本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
随机推荐
- 网上找的JS截取字符串(含中文)
<script> /* 2007-11-28 XuJian */ //截取字符串 包含中文处理 //(串,长度,增加...) function subString(str, len, ha ...
- ionic Plugin插件,与原生app端交互,ionic端代码
创建plugins 目录 definitions.ts文件 definitions.ts文件: import {Plugin} from '@capacitor/core/dist/esm/defin ...
- 移动pc常用Meta标签
移动常用 <meta charset="UTF-8"> <title>{$configInfos['store_title']}</title> ...
- BZOJ 1426: 收集邮票 数学期望 + DP
Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡 ...
- [luogu4159 SCOI2009] 迷路(矩阵乘法)
传送门 Solution 矩阵乘法新姿势qwq 我们知道当边权为1是我们可以利用矩阵快速幂来方便的求出路径数 那么对于边权很小的时候,我们可以将每个点都拆成若干个点 然后就将边权不为1转化为边权为1了 ...
- 关于 多个git用户或多个git管理工具切换时出现的问题总结
在这几天遇到了个比较头痛的问题 因为在同时使用多个git工具(gitlab,github.gitee)由于账户的问题和这个仓库指定地址,导致拉代码和推代码不能正常运行 问题解决: 对于多个git直接的 ...
- 37.query string、_all metadata
主要知识点 1.query string基础语法 2._all metadata的理解 一.query string基础语法 1.GET /test_index/test_type/_sear ...
- 数位dp题集
题集见大佬博客 不要62 入门题,检验刚才自己有没有看懂 注意一些细节. 的确挺套路的 #include<bits/stdc++.h> #define REP(i, a, b) for(r ...
- [bzoj2789][Poi2012]Letters_树状数组
Letters bzoj-2789 Poi-2012 题目大意:给定两个字符串A和B,每次交换A中相邻两个数.问至少交换多少次,可以将A变成B. 注释:$2\le n\le 10^6$ 想法:我们发现 ...
- hdoj 1257最少拦截系统
/*最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...