#{}与${}区别

  1. “#{}”使用的是preparedStatement方式预处理,就是使用了占位符来填充数据防止SQL注入.

  2. ${}使用的是statement方式进行sql语句的拼接操作,有SQL注入风险。

映射文件配置:

  1. <delete id="delete" parameterType="int">
  2. delete from t_user where no = #{no}
  3. </delete>
  4. <delete id="deleteById" parameterType="int">
  5. delete from t_user where no = ${no}
  6. </delete>

测试代码:

  1. @Test
  2. public void test2() {
  3. int add = mapper.delete(1010);
  4. System.out.println("删除了"+add+"条信息");
  5. }
  6. @Test
  7. public void test3() {
  8. int add = mapper.deleteById(1111);
  9. System.out.println("删除了"+add+"条信息");
  10. }

测试结果:



3. ${}使用时必须在接口的参数上面使用注解@Parma("参数名")来定义参数,否则会报错。

resultType与resultMap区别

  1. resultType用来设置SQL事务操作返回的数据是什么类型的。(一般用在单表处理中)

  2. resultMap基本功能在resultType的基础上增加了返回类型数据名称的别名设置,就是针对,引用类型的成员名称与数据库表单的数据名称不一致的情况。(一般使用在多表联级查处理中)

映射文件设置

  1. <resultMap type="user" id="baseMap">
  2. <!-- 通常使用在多级联表查询中,由于表中的属性
  3. 名与后端对应类的成员名称对不上,所以可以
  4. 在此处定义成员变量的别名使查询结果一一对
  5. 应,方便数据接收 -->
  6. <!-- 表结构中的column和对象中成员变量对应关系 -->
  7. <id column="no" property="no"/>
  8. <result column="name" property="xxxname"/>
  9. <result column="age" property="age"/>
  10. </resultMap>
  11. <!--
  12. resultType一般用在单表处理中
  13. resultMap 一般使用在多表中
  14. -->
  15. <select id="query" resultMap="baseMap">
  16. select * from t_user
  17. </select>
  18. <select id="queryById" resultType="user" parameterType="int">
  19. select *
  20. from t_user
  21. where no=#{id}
  22. </select>

查询测试,已经提前将User类中的name成员名改成了xxxname,与数据库中的name不一致:

  1. @Test
  2. public void test() {
  3. List<User> list = mapper.query();
  4. for (User user : list) {
  5. System.err.println("使用了resultMap"+user);
  6. }
  7. User byId = mapper.queryById(1111);
  8. System.err.println("使用了resultType"+byId);
  9. }

查询结果,可以看到没有设置成员别名的成员值是NULL:

MyBatis映射文件的基本功能的更多相关文章

  1. MyBatis映射文件 相关操作

    一.MyBatis映射文件 1.简介 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行 ...

  2. MyBatis 映射文件

    Mybatis映射文件简介 1) MyBatis 的真正强大在于它的映射语句.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉 ...

  3. Mybatis映射文件完整模板参照

    Mybatis映射文件完整模板参照 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...

  4. Mybatis映射文件中#取值时指定参数相关规则

    Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale ...

  5. SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis

    一:DAO实体编码 1:首先,在src目录下,新建org.myseckill.entity包,用于存放实体类: 2:实体类设计 根据前面创建的数据库表以及映射关系,创建实体类. 表一:秒杀商品表 对应 ...

  6. MyBatis 映射文件详解

    1. MyBatis 映射文件之<select>标签 <select>用来定义查询操作; "id": 唯一标识符,需要和接口中的方法名一致; paramet ...

  7. MyBatis映射文件中用#和$传递参数的特点

    在MyBatis映射文件中用#和$传递参数的特点, #是以占位符的形式来传递对应变量的参数值的,框架会对传入的参数做预编译的动作, 用$时会将传入的变量的参数值原样的传递过去,并且用$传递传递参数的时 ...

  8. Mybatis映射文件标签(关于sql)

    Mybatis映射文件 1.接口的全限定名和映射文件的namespace一致 <mapper namespace="com.offcn.dao.UserDao"> 2. ...

  9. Mybatis映射文件

    Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...

随机推荐

  1. os.path.join 的用法

    Python中有join和os.path.join()两个函数,具体作用如下: join:连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串os.path.joi ...

  2. Ionic JPush极光推送 插件实例

    1.需要去这里注册https://www.jiguang.cn 注册成功获取AppKey 备注填写应用包名规范点,在项目还要用那 2.创建ionic 项目 指定你注册时候的包名(假如:com.ioni ...

  3. C#解析字符串公式

    /// <summary> /// 中缀表达式到逆波兰表达式的转换及求值 /// </summary> public class RpnExpression { #region ...

  4. java-多线程的入门_进阶总结

    多线程 概述图 1.概述 进程:正在执行中的程序,其实时应用程序在内存中运行的那片空间. 线程:进程中的一个执行单元,负责进程中的程序的运行,一个进程中至少要有一个线程. (进程可以理解为是一个QQ程 ...

  5. day38 06-MyEclipse配置Schema约束

  6. uptime查看服务器运行时间

    uptime命令用于查看服务器运行了多长时间以及有多少个用户登录,快速获知服务器的负荷情况. uptime的输出包含一项内容是load average,显示了最近1,5,15分钟的负荷情况.它的值代表 ...

  7. Codeforces Round #436 (Div. 2) 题解864A 864B 864C 864D 864E 864F

    A. Fair Game time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  8. 洛谷P1969 [NOIP2013提高组Day2T1] 积木大赛

    P1969 积木大赛 题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前, ...

  9. ubuntu上用源码进行一键安装mysql

      首先卸载原有的mysql: 首先查看自己的mysql有哪些依赖 #dpkg --list|grep mysql 先卸载 #sudo apt-get remove mysql-common #sud ...

  10. Hdu 4251 区间中位数(划分树)

    题目链接 The Famous ICPC Team Again Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 32768/3276 ...