解决MyBatis返回结果类型为Boolean的问题
问题描述:
在使用MyBatis时,有时需要检查某个记录是否存在数据库中,然后根据其返回的布尔值true or false,来进行逻辑判断。那怎么做呢?
解决方案:
如检测某个手机号是否被注册过:
<select id="checkPhoneExist" parameterType="java.lang.String" resultType="java.lang.Boolean"> <![CDATA[ select count(id) from ec_user where PHONE = #{phone, jdbcType=VARCHAR}]]> </select>
注意事项:
Mybatis是根据查询到的记录数进行转换的(1表示为true,0表示为false) 。然而,如果查询到多条记录(大于1),则返回的布尔值为false。
这时候,我们需要将返回来的记录数进行判断,就可以确保该记录在数据库中的唯一性了。
补充知识:Mybatis Mysql布尔类型处理
针对mysql数据库作如下测试,
如果数据库存的为非0数字,转换为true,否则为false
如果javaType的Boolean类型值为true,存到数据库数字为1,false则为0
以上这篇解决MyBatis返回结果类型为Boolean的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
MyBatis查询结果resultType返回值类型的说明
一.返回一般数据类型 比如要根据 id 属性获得数据库中的某个字段值. mapper 接口: // 根据 id 获得数据库中的 username 字段的值 String getEmpNameById(Integer id); SQL 映射文件: <!-- 指定 resultType 返回值类型时 String 类型的, string 在这里是一个别名,代表的是 java.lang.String 对于引用数据类型,都是将大写字母转小写,比如 HashMap 对应的别名是 'hashmap' 基本数
-
解决Mybatis返回update后影响的行数问题
主要在JDBC链接中加入这个参数即可: useAffectedRows=true 补充知识:mybatis批量update,返回行数为-1 mybatis批量更新返回结果为1,是由于mybatis的defaultExExecutorType引起的, 它有三个执行器:SIMPLE 就是普通的执行器:REUSE 执行器会重用预处理语句(prepared statements): BATCH 执行器将重用语句并执行批量更新. BATCH可以批量更新操作,缓存SQL以提高性能,缺陷就是无法获取updat
-
mybatis查询实现返回List<Map>类型数据操作
如下所示: **只要设定resultType而不设定resultMap就可以了**: < select id = "selectByPage" parameterType = "java.util.Map" resultType="java.util.Map" > select rs.*, rssetting.*, cp.STOCK_CODE, cp.UNAME from RS rs left join T_COMPANY cp on
-
解决MyBatis返回结果类型为Boolean的问题
问题描述: 在使用MyBatis时,有时需要检查某个记录是否存在数据库中,然后根据其返回的布尔值true or false,来进行逻辑判断.那怎么做呢? 解决方案: 如检测某个手机号是否被注册过: <select id="checkPhoneExist" parameterType="java.lang.String" resultType="java.lang.Boolean"> <![CDATA[ select count(
-
解决mybatis返回boolean值时数据库返回null的问题
常规情况,我们使用数据库判断 true or false.所写的语句是select count(id) from 表名: 这种常用情况下,只有当查询语句查到数据 且 只有一条时才会返回 true; 还有一种情况,就是数据库中返回判断句,比如 返回的对错将以1或0表示: 但是当返回值为null,或者多个值的时候 会怎么样呢,0 1 还是报错? 测试表示这种情况下会报错: 希望大家使用 boolean 返回时 也能格外小心. 这里简单做了更改方法,可能不是最优化的,有更好的意见还请不吝赐教. 补充知
-
解决mybatis使用char类型字段查询oracle数据库时结果返回null问题
同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以. 使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型. 后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度.如字段 name char(5),若值为sgl,那么oracle会自动用空格补足长度,最终值为sgl. 一.解决方法: 方法1:先用trim()函数把值去掉两边空格再作为条件查询
-
mybatis 返回Map类型key改为小写的操作
默认情况下,当resultType="java.util.Map"时,返回的key值都是大写的. 现在想key改成自己想要的,只需为查询出来的字段增加个别名即可. 如: <select id="getStudentList" resultType="java.util.Map"> select t.name as "sName",t.sex as "sSex" from student <
-
解决myBatis返回integer值的问题
经过测试 将 resultMap="java.lang.Integer" 改成 resultType="java.lang.Integer" 也可以解决问题~ 补充知识:mybatis返回count(*)的整数值 1.mybatis中resultType定义为"java.lang.Integer" <select id="selectNums" resultType="java.lang.Integer&quo
-
mybatis 返回Map类型key默认为大写问题
目录 返回Map类型key默认为大写 在工作中发现的问题 修改方法 关于mybatis返回map的坑 Map中key是分大小写的 返回Map类型key默认为大写 在工作中发现的问题 默认情况下,当resultType="java.util.Map"时,返回的key值都是大写的!! <select id="getSystemDataOutZxwtList" resultType="java.util.Map"> </select&
-
mybatis返回map类型数据空值字段不显示的解决方案
目录 mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 ResultType利用实体返回 springMVC+mybatis查询数据 mybatis返回map空值未返回字段 mybatis开启CallSettersOnNulls mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 IFNULL(rate,'') as rate ResultType利用实体返回 不用map springMVC+mybatis查询数据 返回resultType=”m
-
解决mybatis resultMap根据type找不到对应的包问题
目录 mybatis resultMap根据type找不到对应的包 resultmap和resulttype的一些使用误区 mybatis resultMap根据type找不到对应的包 mybatis resultMap根据type找不到对应的包,当将包名替换为全路径名时,程序又正常运行 这里需要配置typeAliasesPackage 自动配置别名 以下是项目中原有的别名扫描,但是我新建的mapper文件夹不在此路径下,没有别名设置所以报错. typeAliasesPackage定义多个时,用
-
C++返回值类型后置实现(跟踪返回值类型)
在泛型编程中,可能需要通过参数的运算来得到返回值的类型.考虑下面这个场景: template <typename R, typename T, typename U> R add(T t, U u) { return t+u; } int a = 1; float b = 2.0; auto c = add<decltype(a + b)>(a, b); 我们并不关心 a+b 的类型是什么,因此,只需要通过 decltype(a+b) 直接得到返回值类型即可.但是像上面这样使用十分
随机推荐
- vue-router跳转页面的方法
- Jquery Validate 正则表达式实用验证代码大全
- RHEL 7中防火墙的配置和使用方法
- Java实现快速排序算法(Quicktsort)
- 简洁实用的Java Base64编码加密异常处理类代码
- Javascript实现检测客户端类型代码封包
- thinkphp隐藏index.php/home并允许访问其他模块的实现方法
- javascript 正则替换 replace(regExp, function)用法
- Python 3.x 新特性及10大变化
- pyside写ui界面入门示例
- Android实现长按back键退出应用程序的方法
- javascript使用正则表达式检测IP地址
- PHP面向对象程序设计OOP继承用法入门示例
- 详解Java的Hibernate框架中的缓存与原生SQL语句的使用
- JavaScript中将数组进行合并的基本方法讲解
- java解析JSON数据详解
- 使用Python监控文件内容变化代码实例
- 解决MySQL8.0 输入无误仍然提示Access denied问题
- Vue.use()在new Vue() 之前使用的原因浅析
- Python中将dataframe转换为字典的实例