#{}与${}区别

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

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

映射文件配置:

    <delete id="delete" parameterType="int">
delete from t_user where no = #{no}
</delete> <delete id="deleteById" parameterType="int">
delete from t_user where no = ${no}
</delete>

测试代码:

@Test
public void test2() {
int add = mapper.delete(1010);
System.out.println("删除了"+add+"条信息");
} @Test
public void test3() {
int add = mapper.deleteById(1111);
System.out.println("删除了"+add+"条信息");
}

测试结果:



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

resultType与resultMap区别

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

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

映射文件设置

<resultMap type="user" id="baseMap">
<!-- 通常使用在多级联表查询中,由于表中的属性
名与后端对应类的成员名称对不上,所以可以
在此处定义成员变量的别名使查询结果一一对
应,方便数据接收 -->
<!-- 表结构中的column和对象中成员变量对应关系 -->
<id column="no" property="no"/>
<result column="name" property="xxxname"/>
<result column="age" property="age"/>
</resultMap> <!--
resultType一般用在单表处理中
resultMap 一般使用在多表中
-->
<select id="query" resultMap="baseMap">
select * from t_user
</select>
<select id="queryById" resultType="user" parameterType="int">
select *
from t_user
where no=#{id}
</select>

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

@Test
public void test() {
List<User> list = mapper.query();
for (User user : list) {
System.err.println("使用了resultMap"+user);
}
User byId = mapper.queryById(1111);
System.err.println("使用了resultType"+byId);
}

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

最新文章

  1. [Ubuntu] Ubuntu DNS服务器配置
  2. tinyhttpd-0.1.0_hacking
  3. jQuery 添加元素和删除元素
  4. iPhone手机VPN设置
  5. 【玩转Ubuntu】02. Ubuntu上搭建Android开发环境
  6. 教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题)
  7. 浩哥解析MyBatis源码(十二)——binding绑定模块之MapperRegisty
  8. LoadRunner菜鸟入门学习笔记
  9. 【读英文文档】Whetting Your Appetite(刺激你的食欲)
  10. MVC设计模式思想及简单实现
  11. Centos7 下yum安装mysql
  12. 清除UIWebView缓存
  13. ajax实战用法详解
  14. Java动态菜单添加
  15. NAND FLASH和LCD电路图
  16. 【疯狂labview】 Xcontrol+LVoop封装练习 Toolbar
  17. Cassandra学习六 一些知识点
  18. Django问卷调查项目思路流程
  19. GDB基本命令(整合)(转)
  20. [转载]]Java开发如何在线打开Word文件

热门文章

  1. No module named &#39;sklearn.impute&#39;,更新scikit-learn
  2. TZOJ 3522 Checker Challenge(深搜)
  3. 如何将本地项目上传到Git 版本库
  4. 傻瓜式教程--实现登录页面的验证码以及验证(VUE)
  5. angular 项目迭代+记录采坑
  6. 基于Kebernetes 构建.NET Core技术中台
  7. uva 11300 分金币(利用绝对值加和进行求出最小值)
  8. 2019-8-31-dotnet-Framework-源代码-类库的意思
  9. phpBOM头(字符&amp;#65279;)出现的原因以及解决方法_PHP程序员博客|高蒙个人博客
  10. reverse 的用法