博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 映射的 XML 文件
阅读量:4315 次
发布时间:2019-06-06

本文共 3037 字,大约阅读时间需要 10 分钟。

MyBatis 真正的力量是在映射语句中。这里是奇迹发生的地方。 对于所有的力量, SQL

映射的 XML 文件是相当的简单。当然如果你将它们和对等功能的 JDBC 代码来比较,你会
发现映射文件节省了大约 95%的代码量。 MyBatis 的构建就是聚焦于 SQL 的,使其远离于
普通的方式。

SQL 映射文件有很少的几个顶级元素(
按照它们应该被定义的顺序):
 cache - 配置给定命名空间的缓存。
 cache-ref – 从其他命名空间引用缓存配置。
 resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。
 sql – 可以重用的 SQL 块,也可以被其他语句引用。
 insert – 映射插入语句
 update – 映射更新语句
 delete – 映射删除语句
 select – 映射查询语句
 
select

 

这个语句被称作 selectPerson,使用一个 int (或 Integer)类型的参数,并返回一个 HashMap类型的对象,其中的键是列名,值是列对应的值
----------------------select 元素:----------------
parameterType=”int”
parameterMap=”deprecated” resultType=”hashmap”
flushCache=”false”
useCache=”true”
fetchSize=”256”
statementType=”PREPARED”
resultSetType=”FORWARD_ONLY”
>

 

insert
, 
update
, 
delete
数据修改语句 
insert
, 
update 
和 
delete 
在它们的实现中非常相似:
支持自动生成主键的数据库可以使用这个
insert into Author (username,password,email,bio)values (#{username},#{password},#{email},#{bio})
不支持的可以使用这个
      select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
insert into Author(id, username, password, email,bio, favourite_section) values(#{id}, #{username}, #{password}, #{email}, #{bio},#{favouriteSection,jdbcType=VARCHAR})

 

属性描述:
keyProperty:selectKey 语句结果应该被设置的目标属性
resultType    :结果的类型。 MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。
order    :这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果

          设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。

statementType  :  MyBatis 支持 STATEMENT, PREPARED 和CALLABLE 语句的映射类型,
                分别代表 PreparedStatement 和CallableStatement 类型。
sql
这个元素可以被用来定义
可重用的 SQL 代码段,可以包含在其他语句中。比如:
id,username,password
这个 SQL 片段可以被包含在其他语句中,例如:

 

字符串替换
默认情况下,使用#{}格式的语法会导致 MyBatis 创建预处理语句属性并以它为背景设
置安全的值(比如?)。这样做很安全,很迅速, 也是首选的做法,有时你只是想直接在 SQL
语句中插入一个不改变的字符串。比如,像 ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这里 MyBatis 不会修改或转义字符串。
重要: 接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会
         导致潜在的 SQL 注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。
resultMap
----------------------------------将返回的结果映射到Map
----------------------------------将返回的结果映射到Bean
这个可以输入类的别名,而不用输入类的全路径
 
如果列名没有精确匹配,你可以在列名上使用 
select 
字句的别名(一个
标准的 
SQL 特性)来匹配标签

 

》》》解决列名不匹配的另外一种方式

 

引用它的语句使用 resultMap 属性就行了(注意我们去掉了 resultType 属性)。比如:

 

转载于:https://www.cnblogs.com/zhangXingSheng/p/6222144.html

你可能感兴趣的文章
JK_Rush关于索引的一些总结
查看>>
[Codevs] 线段树练习5
查看>>
Amazon
查看>>
component-based scene model
查看>>
Echart输出图形
查看>>
hMailServer搭建简单邮件系统
查看>>
从零开始学习jQuery
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
查看>>
opacity半透明兼容ie8。。。。ie8半透明
查看>>
CDOJ_24 八球胜负
查看>>
Alpha 冲刺 (7/10)
查看>>
一款jQuery打造的具有多功能切换的幻灯片特效
查看>>
SNMP从入门到开发:进阶篇
查看>>
@ServletComponentScan ,@ComponentScan,@Configuration 解析
查看>>
unity3d 射弹基础案例代码分析
查看>>
thinksns 分页数据
查看>>
os模块
查看>>
LINQ to SQL vs. NHibernate
查看>>
基于Angular5和WebAPI的增删改查(一)
查看>>
windows 10 & Office 2016 安装
查看>>