记一次mybatis<if>标签的问题】的更多相关文章

前言 到底还是没理解清楚的锅~~~~搞了好久...啊啊啊啊 错误: 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…
记一笔MyBatis的坑 1.sql查询concat()连接函数xml运行查询乱码 ) , ), char)'%') bll FROM fact_dkxx sq 由于连接的字符串中包含数字与百分比字符串,数据类型不一致,在xml中查询返回会导致数据乱码,在数据库执行sql又没问题                 经过一番查找问题,发现需要将数字使用CONVERT(number,char)函数转换字符类型连接. 2.MyBatis中 <if test="isfk != null and is…
背景 考虑以下场景: InfoTable(信息表): Name Gender Age Score 张三 男 21 90 李四 女 20 87 王五 男 22 92 赵六 女 19 94 孙七 女 23 88 周八 男 20 91 StatusTable(状态表,指是否有在考试之前复习): Name hasReview 张三 是 李四 否 王五 是 赵六 是 孙七 否 周八 是 现在,我想知道所有复习过的学生的成绩,可以利用mysql中的子查询来实现: SELECT Score FROM Info…
1.MyBatis 别名标签 如果在映射文件中,大量使用类名比较长,可以在sqlMapConfig.xml声明别名, 在映射文件中可以使用别名缩短配置,注意此配置要放在最前面 sqlMapConfig.xml中: <!-- 声明别名 --> <typeAliases> <typeAlias type="cn.tedu.mybatis.beans.User" alias="Alias_User"/> </typeAliases…
MyBatis<forEach>标签的使用 你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis.当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中,用名称作为键.List 实例将会以“list”作为键,而数组实例将会以“array”作为键. foreach元素的属性主要有 item,index,collection,open,separator,close.  item表示集合中每一个元素进行迭代时的别名, index指定一个名字,用于表示在迭代过程中,每次…
mybatis resultmap标签type属性什么意思? :就表示被转换的对象啊,被转换成object的类型啊 <resultMap id="BaseResultMap" type="BaseObject"> <id property="id" column="id" /> <result property="appId" column="appid"…
MyBatis常用标签 ● 定义sql语句:select.insert.delete.update ● 配置JAVA对象属性与查询结构及中列明对应的关系:resultMap ● 控制动态sql拼接:if.foreach.choose ● 格式化输出:where.set.trim ● 配置关联关系:collection.association ● 定义常量及引用:sql.include MyBatis提供了对SQL语句动态的组装能力,大量的判断都可以在 MyBatis的映射XML文件里面配置,以达…
一.My Batis trim标签有点类似于replace效果. trim 属性, prefix:前缀覆盖并增加其内容 suffix:后缀覆盖并增加其内容 prefixOverrides:前缀判断的条件 suffixOverrides:后缀判断的条件 比如:Java SQL语句如下, select b.* from sys_menu b where 1 = 1 <trim suffix="WHERE" suffixOverrides="AND | OR">…
有时候开发中需要根据多个ID去查询,可以将ID封装为List或者数组然后使用MyBatis中的foreach标签构建in条件. 这里我将ID封装为String[]作为参数. <select id="selectList" parameterType="java.util.List" resultType="java.lang.Integer"> SELECT COUNT(1) FROM t_user WHERE id IN <f…
1.常见错误: There is no getter for property named 'parentId' in 'class java.lang.Long'(或者String) org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'paren…
使用mybatis 的include标签达到SQL片段达到代码复用的目的 示例: xml文件 <sql id="paysql"> payid,p.oid,p.bdate,p.lid,lname,p.uid,p.uids,username,p.fdate,p.ysprice,reprice,p.statues,p.flag,clockdate,p.remark,remethod </sql> <!-- 应收款项.未结清,当前用户 --> <sel…
一.批量插入数据 示例:添加订单商品表 1.模型层的相应代码 /** * 添加订单商品表 * @param ordergoods * @return */ public boolean addOrdergood(List<Ordergood> ordergoods){ return session.insert(Ordergood.class.getName()+".addOrdergood", ordergoods)>0; } 2.xml文件 <!--添加订单…
MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦. 1.<if> 主要用于sql语句拼接(很简单)如示例 2.<choose,when,otherwise> 有些时候,我们不想用到所有的条件语句,而只想从中择其一二.针对这种情况,MyBatis 提供了 choose…
MyBatis 提供了 choose 元素.if标签是与(and)的关系,而 choose 是或(or)的关系. choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束.当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql. <select id="dynamicChooseTest" parameterType="xxx" resultType="xxx…
Mybatis中生成动态SQL的标签有四类,分别是: if choose (when, otherwise) trim (where, set) foreach 1.if 当需要动态生成where条件时,可以使用if标签: <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test=&qu…
mybatis 映射文件中,if标签判断字符串相等,两种方式: 因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量是否是字符串Y的时候, <if test="sex=='Y'.toString()"> <if test = 'sex== "Y"'> 注意: 不能使用 <if test="sex=='Y'"> and 1=1 </if> 因为mybatis会把'Y'解析为字…
当 where 中的条件使用的 if 标签较多时,这样的组合可能会导致错误.当 java 代码按如下方法调用时: @Test public void select_test_where() { User user = new User(); user.setUsername(null); user.setSex(1); List<User> userList = this.dynamicSqlMapper.getUsertList_where(user); for (User u : user…
1. 定义sql语句 1.1 select 标签 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) <select id="selectByPrimaryKey" resultMap="BaseResultMa…
格式:<if test=""> sql语句 </if> <select id="selectByName" resultType="Person" parameterType="java.lang.String" > select * from person <if test="_parameter != null"> where name = #{name}…
1.场景: fyq_share_house 表 和 fyq_sh_tag 表 两张表是一对多的关系, 一个楼盘对应多个标签,在实体类ShareHouse中使用 /** * 楼盘标签 */ private List<String> tags ; 来存放多个tag标签. MyBatis对应的xml配置文件表示为 <collection property="tags" ofType="string"> <constructor> <…
一.定义SQL语句 (1)select 标签的使用 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的 是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) 例子: sql: <select id="userList" parameterType="user&qu…
From<MyBatis从入门到精通> <!-- 4.5 bind用法 bind标签可以使用OGNL表达式创建一个变量并将其绑定到上下文中. 需求: concat函数连接字符串,在MySQL中,这个函数支持多个参数,但在Oracle中只支持两个参数. 由于不同数据库之间的语法差异,如果更换数据库,有些SQL语句可能就需要重写.针对这种情况 可以使用bin标签来避免由于更换数据库带来的一些麻烦. <bind>属性: name:为绑定到上下文的变量名 value:为OGNL表达式…
From<MyBatis从入门到精通> 一.foreach实现in集合 1.映射文件中添加的代码: <!-- 4.4 foreach用法 SQL语句有时会使用IN关键字,例如id in {1,2,3}.可以使用id in #{ids}方式直接 获取值,但是这种写法不能防止SQL注入,想避免SQL注入就需要用#{}的方式,这时就需要 配合使用foreach标签来满足需求. foreach可以对数组,map或实现了Iterable接口(如List.Set)的对象进行遍历.数组 在处理时会转换…
From<MyBatis从入门到精通> 第一步,在接口中添加方法: public interface UserMapper { SysUser selectById(Long id); } 第二步,完成映射文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" &q…
一.定义SQL语句 (1)select 标签的使用 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的 是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) 例子: sql: <select id="userList" parameterType="user&qu…
事件的原因是这样的,需求是按条件查数据然后给前端展示就行了,写的时候想着挺简单的,不就是使用 MyBatis 动态 SQL 去查询数据吗? 现实还是很残酷的,等我写完上完 UAT 后,前端同学说根据state查的数据与理想的数据不一致,这个state当时设计时只有两个值:0和1. /** * 数据状态 */ @Range(min = 0, max = 1, message = "状态只能为0(未处理),1(已处理)") private Integer state; 理想情况下通过前端传…
1. 定义sql语句 select 标签 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user resultType :语句返回值类型或别名.注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType 与resultMap 不能并用) <select id="selectByPrimaryKey" resultMap="BaseResultMap&qu…
最近做的一个项目,按钮使用的是a标签做的,样子还不错.不过正是这个a标签把我坑死了,有一个场景是点击a标签去调后台服务,为了防止用户频繁点击按钮提交,在去请求后台服务的时候肯定要先把按钮的事件给禁止掉,后台服务回来之后,要把按钮变成可以点击的状态.button有一个disabled属性可以禁止按钮的点击,但是a标签并没有这个属性,disabled对它没有用.当时想了许久都不知道怎么去处理这个东西,想过把a标签换成button,但是一想到要找UI修改demo就不去了,顺便增加一下自己这方面的知识.…
看到的错误信息如出一辙都是这样的:Method threw 'org.apache.ibatis.binding.BindingException' exception.Invalid bound statement (not found): **.dao.**Dao.select 1.考虑返回值类型是否不匹配,一顿修改,@Results 也使用到. 最终无果. 2.开始各种百度,先申明本人使用的方式注解方式, 并非最常用的xml方式. 百度内容大都雷同,检查包名,类名,方法名 是否映射.无果.…
项目是用ssm搭建的.主要是为app数据接口.其中有一个需求就app想要查询一段时间内某个用户的测量信息,所以app给我后端传递了3个参数,分别是appuserId(String),startDate(Date),endDate(Date).我在controller中验证参数没问题之后我将参数传递给service层,然后在service层传递给dao层,执行真正的sql语句查询. service层: Map<String, Object> conditionMap = new HashMap&…