MyBatis映射文件的基本功能
2024-10-08 01:56:21
#{}与${}区别
“#{}”使用的是preparedStatement方式预处理,就是使用了占位符来填充数据防止SQL注入.
${}使用的是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区别
resultType用来设置SQL事务操作返回的数据是什么类型的。(一般用在单表处理中)
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:
最新文章
- [Ubuntu] Ubuntu DNS服务器配置
- tinyhttpd-0.1.0_hacking
- jQuery 添加元素和删除元素
- iPhone手机VPN设置
- 【玩转Ubuntu】02. Ubuntu上搭建Android开发环境
- 教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题)
- 浩哥解析MyBatis源码(十二)——binding绑定模块之MapperRegisty
- LoadRunner菜鸟入门学习笔记
- 【读英文文档】Whetting Your Appetite(刺激你的食欲)
- MVC设计模式思想及简单实现
- Centos7 下yum安装mysql
- 清除UIWebView缓存
- ajax实战用法详解
- Java动态菜单添加
- NAND FLASH和LCD电路图
- 【疯狂labview】 Xcontrol+LVoop封装练习 Toolbar
- Cassandra学习六 一些知识点
- Django问卷调查项目思路流程
- GDB基本命令(整合)(转)
- [转载]]Java开发如何在线打开Word文件
热门文章
- No module named &#39;sklearn.impute&#39;,更新scikit-learn
- TZOJ 3522 Checker Challenge(深搜)
- 如何将本地项目上传到Git 版本库
- 傻瓜式教程--实现登录页面的验证码以及验证(VUE)
- angular 项目迭代+记录采坑
- 基于Kebernetes 构建.NET Core技术中台
- uva 11300 分金币(利用绝对值加和进行求出最小值)
- 2019-8-31-dotnet-Framework-源代码-类库的意思
- phpBOM头(字符&;#65279;)出现的原因以及解决方法_PHP程序员博客|高蒙个人博客
- reverse 的用法