MyBatis中resultMap、parameterMap、resultType、parameterType的区别与使用

1、Map:是键值对的映射;Type:指Java类型;

2、resultMap表示将查询结果集中的列一一映射到bean对象的各个属性。映射的查询结果集中的列标签可以根据需要灵活变化,并且,在映射关系中,还可以通过typeHandler设置实现查询结果值的类型转换,比如布尔型与0/1的类型转换。

    resultType 表示的是bean中的对象类,此时可以省略掉resultMap标签的映射,但是必须保证查询结果集中的属性 和 bean对象类中的属性是一一对应的,此时大小写不敏感,但是有限制。

3、resultMap,resultType 封装结果集

<!-- 将JAVA实体类中的属性和表中的字段进行对应 
  column:数据库中的列
  property:对应的实体类中的属性
 -->

 

 

${}与#{}的区别:

1、#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。

2、 $将传入的数据直接显示生成在sql中

3、 #方式能够很大程度防止sql注入,$方式无法防止Sql注入。

#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

 


SQL中execute、executeQuery和executeUpdate之间的区别:

executeQuery:用于产生单个结果集的语句,例如 SELECT 语句

executeUpdate:用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。

execute:用于执行返回多个结果集、多个更新计数或二者组合的语句.execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用

 

posted @ 2020-06-04 14:32  TearsSmile  阅读(1066)  评论(0编辑  收藏  举报