Mybatis常见使用总结


  • Mapper中#{}和${}的区别
  1. #{}采用的是占位符进行拼接sql语句,${}直接显式的显式字符串
  2. #{}会尽可能的防止sql注入的问题,${}会发生sql注入

相比来说最好是使用#{}不要使用${},但是Order By时一般使用$
所谓安全性的sql注入问题,例如:

select * from ${tableName} where name = #{name}   

假如${tableName}="user; delete user; -- "

select * from user; delete user; -- where name = ?;

完,用户表没了...


  • Mapper中批量添加和删除

批量操作使用的是foreach标签
collection:要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象没有默认的键。
当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:
如果User有属性List ids。入参是User对象,那么这个collection = "ids"
如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"
item:循环的变量别名
separator:集合中每个对象之间的分隔符
open:以。。。开始
close:以。。。结束
index:集合序号
批量添加

<insert id="batchSaveUser">
    insert into t_user (user_name,sex) values
    <foreach collection="users" item="u" separator=",">
        (#{u.userName},#{u.sex})
    </foreach>
</insert>

批量删除

<delete id="batchDeleteUser">
    delete from t_user where id in (
    <foreach collection="ids" item="id" separator=",">
        #{id}
    </foreach>
    )  
</delete>

添加用户并返回新添加的用户

<insert id="insertUser" parameterType="cn.xinxinkaikai.pojo.User">
    <!-- 
        keyProperty:执行sql语句后保存的位置
        resultType:返回类型
        order:该sql语句执行时期,相对于insert语句执行的时间
     -->
    <selectKey keyProperty="uId" resultType="Integer" order="AFTER">
        select LAST_INSERT_ID()
    </selectKey>
    insert into users(uName,uPasswd) values (#{uName},#{uPasswd})
</insert>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,408评论 19 139
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,156评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,935评论 18 399
  • Spring 技术笔记Day 1 预热知识一、 基本术语Blob类型,二进制对象Object Graph:对象图...
    OchardBird阅读 4,565评论 0 2
  • 最近在学习类过程中,绑定方法这个概念没有理解透彻,所以在网上找了很多相关博客、文章研究到底是怎么一回事。因为有的文...
    风萧雨霖阅读 5,152评论 0 0