MyBatis映射文件的基本功能
#{}与${}区别
“#{}”使用的是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:

MyBatis映射文件的基本功能的更多相关文章
- MyBatis映射文件 相关操作
一.MyBatis映射文件 1.简介 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行 ...
- MyBatis 映射文件
Mybatis映射文件简介 1) MyBatis 的真正强大在于它的映射语句.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉 ...
- Mybatis映射文件完整模板参照
Mybatis映射文件完整模板参照 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...
- Mybatis映射文件中#取值时指定参数相关规则
Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale ...
- SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis
一:DAO实体编码 1:首先,在src目录下,新建org.myseckill.entity包,用于存放实体类: 2:实体类设计 根据前面创建的数据库表以及映射关系,创建实体类. 表一:秒杀商品表 对应 ...
- MyBatis 映射文件详解
1. MyBatis 映射文件之<select>标签 <select>用来定义查询操作; "id": 唯一标识符,需要和接口中的方法名一致; paramet ...
- MyBatis映射文件中用#和$传递参数的特点
在MyBatis映射文件中用#和$传递参数的特点, #是以占位符的形式来传递对应变量的参数值的,框架会对传入的参数做预编译的动作, 用$时会将传入的变量的参数值原样的传递过去,并且用$传递传递参数的时 ...
- Mybatis映射文件标签(关于sql)
Mybatis映射文件 1.接口的全限定名和映射文件的namespace一致 <mapper namespace="com.offcn.dao.UserDao"> 2. ...
- Mybatis映射文件
Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...
随机推荐
- YUM配置文件
创建容器,位置在/etc/yum.repos.d,扩展名必须是.repo #cd /etc/yum.repos.d #vim yum.repo 新建一个仓库文件,名字可以随便定义,在 ...
- Blow up the city
Blow up the city 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Country A and B are at war. Country A needs to organ ...
- 前端(Node.js)(1)-- 初识Node.js
1.认识 Node.js 诞生.发展.应用现状.生态圈等方面 1.1. 2008年 RyanDahl的目标是创建一个易扩展.适用于现代Web应用通信的服务器平台 1.2.国内外的应用情况 Linked ...
- codeforces 545E E. Paths and Trees(单源最短路+总权重最小)
E. Paths and Trees time limit per test:3 seconds memory limit per test:256 megabytes input:standard ...
- 基于VSCode的vue单文件组件模板设置---一次设置,可爽终生
第一步: 第二步: 第三步: 打开vue.json文件后,如果是初次设置,应该如下图所示,绿色注释部分不用管,注意那两个白色大括号 第四步:在大括号内全部粘贴如下代码,保存即可完成vue模板的设置 & ...
- FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
自从继承了hibernate ,全都是些奇葩问题. 努力解决中,先发布,以备忘
- 日志lombok插件安装及配置
安装lombok插件 下载Lombok.jar http://projectlombok.googlecode.com/files/lombok.jar 运行Lombok.jar java -jar ...
- 2018-11-1-WPF-Main-thread-gets-a-deadlock-when-stylus-input-thread-is-waiting-for-the-window-to-clos...
title author date CreateTime categories WPF Main thread gets a deadlock when stylus input thread is ...
- NOIP模拟17.10.12
T1 临江仙 旧梦 题目背景 闻道故园花陌,今年奼紫嫣红.扬帆直渡水千重.东君何解意,送我一江风. 还是昔时庭院,终得醉卧花丛.残更惊醒月明中.流光如旧岁,多少梦成空. 题目描述 #define go ...
- vue-li+webpack+iview构建项目步骤
首先安装各类插件 npm install vue-cli -g vue init webpack demo npm install iview --save npm install less styl ...