Mybatis的mapper文件中#和$的区别 以及 resultType和resultMap的区别

一般#{}用于传递查询的参数,一般用于从dao层传递一个string或者其他的参数过来,mybatis对这个参数会进行加引号的操作,将参数转变为一个字符串。

SELECT * FROM employee WHERE name="jack"

而$则不同,我们一般用于ORDER BY的后面。

SELECT * FROM employee ORDER BY salary

MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用。

原文地址:https://www.cnblogs.com/liuqing576598117/p/10600142.html

时间: 2024-08-29 01:44:45

Mybatis的mapper文件中#和$的区别 以及 resultType和resultMap的区别的相关文章

关于Mybatis的mapper文件中${}和#{}的区别和注意事项

#{}占位符 可以有效防止sql注入,使用时不需要关注参数的类型,mybatis会自动进行java类型和jdbc类型的转换:#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,#{}括号中可以是value或者其他名称. ${}和#{}不同,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或者pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value,如果

[DB][mybatis]MyBatis mapper文件中的变量引用方式#{}与${}的差别

MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义. 示例1: 执行SQL:Select * from emp where name = #{employeeName} 参数:employeeName=>Smith 解析后执行的SQL:Select * from emp where n

MyBatis mapper文件中的变量引用方式#{}与${}的差别

MyBatis mapper文件中的变量引用方式#{}与${}的差别 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义.示例1:执行SQL:Select * from emp where name = #{employeeName}参数:employeeName=>Smith解析后执行的SQL:Select * from emp where name

关于mybatis写mapper文件注意事项

xml中某些特殊符号作为内容信息时需要做转义,否则会对文件的合法性和使用造成影响 Html代码   < < > > & & &apos; ' " " 在mapper文件中写sql语句时,为避免不必要的麻烦(如<等),建议使用<![CDATA[ ]]>来标记不应由xml解析器进行解析的文本数据,由<![CDATA[  ]]>包裹的所有的内容都会被解析器忽略 <![CDATA[ sql语句 ]]> X

自动生成Mybatis的Mapper文件

自动生成Mybatis的Mapper文件 工作中使用mybatis时我们需要根据数据表字段创建pojo类.mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作很琐碎和重复,mybatis官方也发现了这个问题,因此给我们提供了mybatis generator工具来帮我们自动创建pojo类.mapper文件以及dao类并且会帮我们配置好它们的依赖关系. 实际上,最非常流行MyBatis-Plus中内置了代码生成器:采用代码或者 Maven 插件可快速生成 Mapper . Mo

MyBatis的Mapper文件的foreach标签详解

MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据.如:使用foreach来拼接in子语句. 在学习MyBatis Mapper文件的foreach标签时我们先看看DTD是如何定义的?DTD代码如下: 1 2 3 4 5 6 7 8 9 10 <!-- 定义foreach元素 --> <!ELEMENT foreach (#PCDATA | include | trim | where | set | fo

Mapper 文件中SQL不等于的写法

Mybatis中的mapper文件中不等于的几种写法在XML文件中是不可以直接使用 < .>.&的,语法检查会报错误.如需使用,需要将其转义为对应的实体. 预期执行SQL效果:select t.name form tablenme t where t.code <> 1; 第一种:转义 < < (小于) > > (大于) <> <> (不等于) mapper文件写法:select t.name form tablenme t

Mybatis mapper文件中的转义方法

在mybatis中的sql文件中对于大于等于或小于等于是不能直接写?=或者<=的,需要进行转义,目前有两种方式: 1.通过符号转义: 转义字符       <     <   小于号          >      >      大于号       &     &   和      &apos;     ’  单引号      "      " 双引号 2.通过标识符: 使用<![CDATA[ ]]>标记的sql语句中的

MyBatis中关于resultType和resultMap的区别

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在. 在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值.