2016/10/11 MyBatis
来源:互联网 发布:java检查邮箱格式 编辑:程序博客网 时间:2024/05/18 03:32
MyBatis 真正的力量是在映射语句中。这里是奇迹发生的地方。对于所有的力量,SQL 映射的 XML 文件是相当的简单。当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 95%的代码量。MyBatis 的构建就是聚焦于 SQL 的,使其远离于普通的方式。
SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):
- cache – 配置给定命名空间的缓存。
- cache-ref – 从其他命名空间引用缓存配置。
- resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。
- parameterMap – 已经被废弃了!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除。这里不会记录。
- sql – 可以重用的 SQL 块,也可以被其他语句引用。
- insert – 映射插入语句
- update – 映射更新语句
- delete – 映射删除语句
- select – 映射查询语句
下一部分将从语句本身开始来描述每个元素的细节:
select
查询语句是使用 MyBatis 时最常用的元素之一。直到你从数据库取出数据时才会发现将数据存在数据库中是多么的有价值, 所以许多应用程序查询要比更改数据多的多。对于每次插入,更新或删除,那也会有很多的查询。这是 MyBatis 的一个基本原则,也是将重心和努力放到查询和结果映射的原因。对简单类别的查询元素是非常简单的。比如:
<select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id}</select>
这个语句被称作 selectPerson, 使用一个 int (或 Integer) 类型的参数, 并返回一个 HashMap 类型的对象,其中的键是列名,值是列对应的值。
注意参数注释:
#{id}
这就告诉 MyBatis 创建一个预处理语句参数。使用 JDBC, 这样的一个参数在 SQL 中会由一个“?”来标识,并被传递到一个新的预处理语句中,就像这样:
// Similar JDBC code, NOT MyBatis… String selectPerson = "SELECT * FROM PERSON WHERE ID=?"; PreparedStatement ps = conn.prepareStatement(selectPerson); ps.setInt(1,id);
当然, 这需要很多单独的 JDBC 的代码来提取结果并将它们映射到对象实例中, 这就是 MyBatis 节省你时间的地方。我们需要深入了解参数和结果映射。那些细节部分我们下面来了解。
select 元素有很多属性允许你配置,来决定每条语句的作用细节。
<select id="selectPerson" parameterType="int" parameterMap="deprecated" resultType="hashmap" resultMap="personResultMap" flushCache="false" useCache="true" timeout="10000" fetchSize="256" statementType="PREPARED" resultSetType="FORWARD_ONLY">
Select Attributes
insert, update and delete
数据变更语句 insert,update 和 delete 在它们的实现中非常相似:
0 0
- 2016/10/11 MyBatis
- 【MyBatis学习11】MyBatis中的延迟加载
- 【MyBatis学习11】MyBatis中的延迟加载
- 【MyBatis学习11】MyBatis中的延迟加载
- Mybatis学习(11)-MyBatis中的一级缓存
- 【MyBatis学习11】MyBatis中的延迟加载
- Mybatis学习(10)-MyBatis中的延迟加载
- spring-11-MyBatis
- mybatis-参数处理-11
- [11-01]mybatis
- 2015.4.10学习mybatis
- mybatis详解-(10)别名
- MyBatis
- MyBatis
- Mybatis
- myBatis
- mybatis
- MyBatis
- tomcat 漏洞 CVE-2016-1240 分析报告
- LeetCode: Combination Sum
- 深度学习(三十八)卷积神经网络入门学习(2.0)
- iOS app 发布错误 ERROR ITMS-90167: "No .app bundles found in the package"
- centos6 搭建 lamp
- 2016/10/11 MyBatis
- PostgreSQL 允许远程访问设置方法
- git的入门级技巧---使用github
- 你需要了解深度学习和神经网络这项技术吗
- 深度学习(四十)优化求解系列(2)简单理解神经网络求解过程-未完待续
- 新手教你学Spring4.0+Maven构建超级简单的Web项目(二)
- IP route rule
- POJ 3984 迷宫问题
- 教你如何配置linux用户实现禁止ssh登陆机器但可用sftp登录!