intellij idea 提供了openApi,通过openApi我们可以自己开发插件,提高工作效率.这边直接贴个链接,可以搭个入门的demo:http://www.jianshu.com/p/2427e4cfd3e9,也可以自己网上找,文章比较多..本人用的intellij idea 2017,jdk需要1.8以上. 第一步:new project,选择IntelliJ Plaltform Plugin 如图, 然后点击下一步,填写项目名,点击finish,项目结构如下: plugin.xm…
MyBatis mapper文件中的变量引用方式#{}与${}的差别 #{},和 ${}传参的区别如下:使用#传入参数是,sql语句解析是会加上"",当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果你传入的参数为 单引号',那么如果使用${},这种方式 那么是会报错的另外一种场景是,如果要做动态的排序,比如 order by column,这个时候务必要用${}select * from table order by 'name' ,这样是没用目前…
转自https://blog.csdn.net/szwangdf/article/details/26714603 MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义. 示例1: 执行SQL:Select * from emp where name = #{employeeName}…
MyBatis mapper文件中使用常量 Java 开发中会经常写一些静态常量和静态方法,但是我们在写sql语句的时候会经常用到判断是否等于 //静态类 public class CommonCode { public static String EENTERPRISE_PRODUCE = "waste_produce_enterprise" public static String EENTERPRISE_DISPOSAL = "waste_disposal_enterp…
在mybatis中的sql文件中对于大于等于或小于等于是不能直接写?=或者<=的,需要进行转义,目前有两种方式: 1.通过符号转义: 转义字符       <     <   小于号          >      >      大于号       &     &   和      &apos;     ’  单引号      "      " 双引号 2.通过标识符: 使用<![CDATA[ ]]>标记的sql语句中的…
前几天来一需求,实现过程中需要修改一个底层的查询接口,具体修改就是在where中添加一个条件,由于这个底层SQL使用的地方太多,所以就想着是用if加一标识符做个判断,传一个只有我会使用的参数,然后动态加上需要拼接的where条件,第一次写法如下: <if test="isSendState == '1' "> and (RLT_STS_CD IN ('21','1','26')) </if> 这里的isSendState就是我加的标识符,这个标识符我加了,但是条…
转载自:http://blog.csdn.net/szwangdf/article/details/26714603 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义.示例1:执行SQL:Select * from emp where name = #{employeeName}参数:employeeName=>Smith解析后执行的SQL:Selec…
MyBatis mapper文件引用变量#{}与${}差异 默认,使用#{}语法,MyBatis会产生PreparedStatement中.而且安全的设置PreparedStatement參数,这个过程中MyBatis会进行必要的安全检查和转义. 演示样例1: 运行SQL:Select * from emp where name = #{employeeName} 參数:employeeName=>Smith 解析后运行的SQL:Select * from emp where name = ?…
1.怎样在mybatis mapper文件sql语句传入hashmap参数? 答:直接这样写map就可以 <select id="selectTeacher" parameterType="Map" resultType="com.myapp.domain.Teacher"> select * from Teacher where c_id=#{id} and sex=#{sex} </select>…
如果要设置占位符默认值的话:需要进行 设置 org.apache.ibatis.parsing.PropertyParser.enable-default-value 属性为true启用占位符默认值处理,默认为false不启用:由于我是 SpirngBoot项目,故需要在yaml文件配置这个即可,如果你是xml或Java配置,在相应位置配置即可 这样你就可以在 mapper文件里使用 ${提取的值:默认值}:分隔符默认是 冒号::不过可以配置   看 org.apache.ibatis.pars…
写在前面 <Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦> 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到的问题,有些问题比较简单直接就解决了,有些问题的解决记录也留在issue记录里,有些则是网上有相关教程,而剩下问题的解决方案,如果时间允许我都会单独的做一篇博客来解答. 问题描述 当时的聊天记录…
mabatis重点是通过标签对sql灵活的组织,通过配置的方式完成输入 输出映射. 1.对mapper.xml中重复的sql抽取统一维护,以及foreach使用 UserMapperCustom.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://…
Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale,resultMap,typeHandler,jdbcTypeName,expression; 其中比较常用的为jdbcType. jdbcType ​ jdbcType通常在某种特定的条件下被设置:即在我们传入数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理.比如Or…
一般来说,我们使用mybatis generator来生成mapper.xml文件时,会生成一些增删改查的文件,这些文件中需要传入一些参数,传参数的时候,我们会注意到,参数的大括号外面,有两种符号,一种是#,一种是$.这两种符号有什么区别呢? SELECT * FROM employee WHERE name=#{name} SELECT * FROM employee ORDER BY ${salary} 从上面的内容我们可以比较清楚的看到,一般#{}用于传递查询的参数,一般用于从dao层传递…
转载:http://blog.csdn.net/ppby2002/article/details/20611737 <?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">…
方法1(手动定位): 打开所要查找的文件,然后点击上图中红框中的按钮即可快速定位. 方法二(自动定位): Project面板右上角有个准星类的图标,点击后勾选上Autoscorll from Source可以定位到当前打开文件在Project里的位置…
转载自:http://blog.csdn.net/hyr83960944/article/details/38067499 在Eclipse中有一个很好的功能,就是比如我打开一个AActivity,左边的Project中,会自动的定位到当前文件所在的目录.但是在Android Studio中不会自动定位了. 那在Android Studio如何快速的定位到我当前打开的文件在哪个目录下,如图,我打开了MyActivity文件,这个文件在一长串的目录下,但是左边project栏并没有定位到我当前文件…
场景: 页面上有搜索框进行调节查询,不同搜索框中的内容可以为空. 过程: 点击搜索,前端把参数传给后台,这是后台要把为空的参数过滤掉. 做法: 通常我们在dao层即mapper.xml中进行过滤判断操作,如下 <if test="name != null and name != ''"> and name = #{name} </if> 这时当name为空时,就会把name这个字段忽略掉,从而达到过滤作用. 问题: 当我们穿的参数为整型时,Integer或者in…
转载自:http://blog.csdn.net/hyr83960944/article/details/38067499 在Eclipse中有一个很好的功能,就是比如我打开一个AActivity,左边的Project中,会自动的定位到当前文件所在的目录.但是在Android Studio中不会自动定位了. 那在Android Studio如何快速的定位到我当前打开的文件在哪个目录下,如图,我打开了MyActivity文件,这个文件在一长串的目录下,但是左边project栏并没有定位到我当前文件…
转自:https://my.oschina.net/wtslh/blog/682704 今天偶然之间刷到了这样一篇博客,有点意外 mybatis 还可以这样使用ONGL常量的方式,该方式针对 xml的mybaits.xml 文件下的 类似include方式 可以在完全弃用mybatis.xml文件的方式更好的一种替换,示例如下: 正常我们在其他地方进行引用时,使用以下标签: 但是我在 接下来的项目中,我使用springboot + mybatisplus 时,基本上摈弃了 配置文件的方式,所以我…
1.现象描述 (1)使用 Mybatis 在进行数据更新时,大部分时候update语句都需要通过动态SQL进行拼接.在其中,if标签中经常会有 xxx !='' 这种判断,若 number 类型的字段上传递的值为 0, 执行更新时会发现数据库中的数据并没有被更新成 0,这种异常现象不会报错,所以容易被忽视. <update id="update" parameterType="com.hrh.mybatis.bean.Person"> update ta…
一.案例描述 书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息. 二.数据库表格 书本类别表(booktypeid,booktypename) 书本信息表(bookid,booktypeid,bookname...) 三.java代码 1.书本类别 BookType.java package com.yh.entity; import java.util.List; public class BookType { private int bookTypeId;…
1.直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中. 2.CONCAT()函数 MySQL的 CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一. 3.使用mybatis标签<bind value='' name=''/> 4.在mybatis中xml文件中配置 name LIKE '%${name}%' 或者是 address LIKE &quo…
一.接口中只有一个参数 1.参数是基本类型or基本类型的包装类or字符串类型 这种情况下映射文件中#{}里的内容可以是任意的,你可以使用#{xxx} 或 #{abc} .....因为此时#{}相当于一个占位符. public interface EmployeeMapper { public Employee getEmpById(Integer id); } 接口 <mapper namespace="com.xj.mapper.EmployeeMapper"> <…
在mapper文件的insert语句前加上<selectKey>标签即可 如下: 添加前测试: 添加后测试:…
简单介绍:翻看以前在学校写的代码,发现那时候有一个sql写的很有意思,用到了 <set>标签,和我现在写的虽然有点差别,但是效果一样 代码: //mapper里的sql <update id="updateEvent" parameterType="map"> update event <set> <if test="title!=null and title!=''"> title=#{title…
一般#{}用于传递查询的参数,一般用于从dao层传递一个string或者其他的参数过来,mybatis对这个参数会进行加引号的操作,将参数转变为一个字符串. SELECT * FROM employee WHERE name="jack" 而$则不同,我们一般用于ORDER BY的后面. SELECT * FROM employee ORDER BY salary MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候(…
mybaits 中没有else要用chose when otherwise 代替 范例一 <!--批量插入用户--> <insert id="insertBusinessUserList" parameterType="java.util.List"> insert into `business_user` (`id` , `user_type` , `user_login` ) values <foreach collection=&…
https://www.2cto.com/database/201806/752139.html用了一段时间的Mybatis了,对于$和#的用法老是很迷糊,特此记下加深记忆. 简单来说 #{} 会在将参数加上引号,例如: SELECT * FROM user WHERE username=#{username} ; 带上参数后的SQL语句即: SELECT * FROM user WHERE username="XuLiTong" ; 而${}并不会在给参数加上引号,例如: SELEC…
<if test="valiStatus==null || valiStatus=='' || valiStatus==4 "> b.work_permit_card_cert is not null and b.work_permit_card_cert!=1 and b.delete_flag =0 </if> <if test="valiStatus==0"> u.user_type = 0 and b.work_permi…