- 浏览: 108887 次
- 性别:
- 来自: 北京
最新评论
-
oaklet:
最新改进型
# coding:gbk
import sys
...
密码生成小工具 -
西斧头帮老大-_-:
楼主,那个我写了个例子
Map<String,Strin ...
EHCache简单使用 -
hopana:
发一下源代码吧,想学习一下
EHCache简单使用 -
menghuannvxia:
谢谢,学习了
EHCache简单使用 -
wtaisi:
非常好。。。。
EHCache简单使用
简介
使用 SQL Map,能够大大减少访问关系数据库的代码。SQL Map 使用简单的 XML配
置文件将 Java Bean 映射成 SQL 语句,对比其他的数据库持续层和 ORM 框架(如 JDO 的
实现,Hibernate 等) ,SQL Map 优点在于它简单易学。要使用 SQL Map,只要熟悉
Java Bean,XML 和 SQL,就能使您充分发挥 SQL 语句的能力。
适用情况
1.系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几
条 select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。
2.开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由
存储过程实现
3.系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高
度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
ibatis-2.3.4.726
准备使用 SQL Map
如何建立 TEST 类与 TEST 数据表之间的映射呢?SQL Map对 Java Bean和数据表之间
的关系没有限制,如一个数据表映射成一个 Java Bean,或多个表映射成一个 Java Bean,或
多个 Java Bean 映射成一个数据表等。因为使用 SQL Map 您可以充分发挥 SQL 语句的全部
潜力而很少限制。下面这个例子,我们使用一个简单的表,将一个表映射成一个 Java Bean,
Java Bean 和表是一对一的关系。
建立表结构如下:
编写 Java Bean 如下:
SQL Map的配置文件
配置文件是 SQL MAP的配置信息统一设置的地方。 SQL Map 配置文件是 XML 文件,
我们可以它设置各种属性,JDBC DataSource和 SQL Map。在配置文件中,可以
方便地统一配置 DataSource 不同的实现。SQL Map 框架包括
DataSource的 iBATIS 实现: SimpleDataSource 类, Jakarta DBCP (Commons),
和可通过 JNDI上下文查找的 DataSource(即应用服务器中的 DataSource)。
对于上面的例子,配置非常简单,如下所示:
SqlMapConfig.xml
SQL Map的映射文件
现在 DataSource 已经配置好了,并且有了统一的 SQL Map 配置文件,我们还需要 SQL
Map 的映射文件。映射文件包括 SQL 语句和参数对象和结果对象的映射。
继续上面的例子,为 TEST 类和 TEST 表之间创建一个 SQL Map 映射文件。
TEST.xml
该例子是 SQL Map最简单的形式。它使用了 SQL Map框架中一个特性,根据匹配
的名字将 ResultSet 的列映射成 Java Bean 的属性(或Map的 key值)。
#value#符号是输入参数,该符号表示使用了输入参数。
⑴ ID
指定了操作 ID,之后我们可以在代码中通过指定操作 id 来执行此节点所定
义的操作,如:
sqlMap.update("updateTEST",test);
⑵ parameterClass
指定了操作所需的参数类型,此例中 update 操作以 TEST 类型的对象作为参数,
目标是将提供的 TEST 实例更新到数据库。
⑶ <![CDATA[……]]>
通过<![CDATA[……]]>节点,可以避免 SQL 中与 XML 规范相冲突的字符对
XML映射文件的合法性造成影响。
⑷ 执行更新操作的 SQL,这里的 SQL 即实际数据库支持的 SQL 语句,将由
ibatis填入参数后交给数据库执行。
使用 SQL Map 框架编程
我们完成了所有的配置文件和映射文件,就剩下的应用的编码工作了。首先要设
置SQL Map, 读入刚创建好的SQL Map XML配置文件。 SqlMapClient 对象是线程安全,
并且应持久生存。对于一个特定的应用,只需进行一次 SqlMap 配置。
因此,它可以作为基类的一个静态对象(即 DAO对象的基类) ,或者,
如果您想让它有更大的作用范围,可以把它封装在方便使用的类中。
例1:数据写入操作(insert):
例2:数据更新操作(update):
例3:数据删除操作(delete):
例4:数据查询操作(select):
使用 SQL Map,能够大大减少访问关系数据库的代码。SQL Map 使用简单的 XML配
置文件将 Java Bean 映射成 SQL 语句,对比其他的数据库持续层和 ORM 框架(如 JDO 的
实现,Hibernate 等) ,SQL Map 优点在于它简单易学。要使用 SQL Map,只要熟悉
Java Bean,XML 和 SQL,就能使您充分发挥 SQL 语句的能力。
适用情况
1.系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几
条 select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。
2.开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由
存储过程实现
3.系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高
度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
ibatis-2.3.4.726
准备使用 SQL Map
如何建立 TEST 类与 TEST 数据表之间的映射呢?SQL Map对 Java Bean和数据表之间
的关系没有限制,如一个数据表映射成一个 Java Bean,或多个表映射成一个 Java Bean,或
多个 Java Bean 映射成一个数据表等。因为使用 SQL Map 您可以充分发挥 SQL 语句的全部
潜力而很少限制。下面这个例子,我们使用一个简单的表,将一个表映射成一个 Java Bean,
Java Bean 和表是一对一的关系。
建立表结构如下:
CREATE TABLE TEST ( TEST_ID NUMBER(10, 0), TEST_NAME VARCHAR2(50), TEST_TIME TIMESTAMP, TEST_TIME2 DATE, TEST_VALUE NUMBER(10, 3), TEST_VALUE2 INTEGER, TEST_VALUE3 FLOAT );
编写 Java Bean 如下:
import java.math.BigDecimal; import java.sql.Timestamp; public class TEST { public BigDecimal getTEST_ID() { return TEST_ID; } public void setTEST_ID(BigDecimal Test_id) { TEST_ID = Test_id; } public String getTEST_NAME() { return TEST_NAME; } public void setTEST_NAME(String Test_name) { TEST_NAME = Test_name; } public Timestamp getTEST_TIME() { return TEST_TIME; } public void setTEST_TIME(Timestamp Test_time) { TEST_TIME = Test_time; } public Timestamp getTEST_TIME2() { return TEST_TIME2; } public void setTEST_TIME2(Timestamp Test_time2) { TEST_TIME2 = Test_time2; } public BigDecimal getTEST_VALUE() { return TEST_VALUE; } public void setTEST_VALUE(BigDecimal Test_value) { TEST_VALUE = Test_value; } public BigDecimal getTEST_VALUE2() { return TEST_VALUE2; } public void setTEST_VALUE2(BigDecimal Test_value2) { TEST_VALUE2 = Test_value2; } public BigDecimal getTEST_VALUE3() { return TEST_VALUE3; } public void setTEST_VALUE3(BigDecimal Test_value3) { TEST_VALUE3 = Test_value3; } private BigDecimal TEST_ID; private String TEST_NAME; private Timestamp TEST_TIME; private Timestamp TEST_TIME2; private BigDecimal TEST_VALUE; private BigDecimal TEST_VALUE2; private BigDecimal TEST_VALUE3; }
SQL Map的配置文件
配置文件是 SQL MAP的配置信息统一设置的地方。 SQL Map 配置文件是 XML 文件,
我们可以它设置各种属性,JDBC DataSource和 SQL Map。在配置文件中,可以
方便地统一配置 DataSource 不同的实现。SQL Map 框架包括
DataSource的 iBATIS 实现: SimpleDataSource 类, Jakarta DBCP (Commons),
和可通过 JNDI上下文查找的 DataSource(即应用服务器中的 DataSource)。
对于上面的例子,配置非常简单,如下所示:
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@127.0.0.1:1521:test"/> <property name="JDBC.Username" value="user"/> <property name="JDBC.Password" value="user"/> <property name="JDBC.DefaultAutoCommit" value="true"/> <property name="Pool.MaximumActiveConnections" value="10"/> <property name="Pool.MaximumIdleConnections" value="5"/> <property name="Pool.MaximumCheckoutTime" value="120000"/> <property name="Pool.TimeToWait" value="20000"/> <property name="Pool.PingQuery" value="SELECT 1 FROM DUAL"/> <property name="Pool.PingEnabled" value="true"/> <property name="Pool.PingConnectionsOlderThan" value="300000"/> <property name="Pool.PingConnectionsNotUsedFor" value="180000"/> </dataSource> </transactionManager> <sqlMap resource="TEST.xml"/> </sqlMapConfig>
参数 | 描述 |
cacheModelsEnabled | 是否启用SqlMapClient上的缓存机制。建议设为"true"。 |
enhancementEnabled | 是否针对POJO启用字节码增强机制以提升 getter/setter 的调用效能,避免使用Java Reflect所带来的性能开销。同时,这也为Lazy Loading带来了极大的性能提升。建议设为"true"。 |
lazyLoadingEnabled | 是否启用延迟加载机制,建议设为"true"。 |
maxRequests | 最大并发请求数(Statement并发数)。 |
maxSessions | 最大Session数。即当前最大允许的并发SqlMapClient 数。 |
maxTransactions | 最大并发事务数。maxTransactions<maxSessions<maxRequests |
useStatementNamespaces | 是否使用Statement命名空间。这里的命名空间指的是映射文件中,sqlMap节点的namespace属性。 |
SQL Map的映射文件
现在 DataSource 已经配置好了,并且有了统一的 SQL Map 配置文件,我们还需要 SQL
Map 的映射文件。映射文件包括 SQL 语句和参数对象和结果对象的映射。
继续上面的例子,为 TEST 类和 TEST 表之间创建一个 SQL Map 映射文件。
TEST.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="TEST"> <typeAlias alias="TEST" type="net.oaklet.jdbc.TEST"/> <select id="selectTESTById" parameterClass="TEST" resultClass="TEST"> select TEST_ID, TEST_NAME, TEST_TIME, TEST_TIME2, TEST_VALUE, TEST_VALUE2, TEST_VALUE3 from TEST where TEST_ID=#TEST_ID# </select> <select id="selectTEST" resultClass="TEST"> select TEST_ID, TEST_NAME, TEST_TIME, TEST_TIME2, TEST_VALUE, TEST_VALUE2, TEST_VALUE3 from TEST </select> <insert id="insertTEST" parameterClass="TEST"> insert into TEST ( TEST_ID, TEST_NAME, TEST_TIME, TEST_TIME2, TEST_VALUE, TEST_VALUE2, TEST_VALUE3 ) values ( #TEST_ID#, #TEST_NAME#, #TEST_TIME#, #TEST_TIME2#, #TEST_VALUE#, #TEST_VALUE2#, #TEST_VALUE3# ) </insert> <update id="updateTEST" parameterClass="TEST"> <![CDATA[ update TEST set TEST_NAME = #TEST_NAME#, TEST_TIME = #TEST_TIME#, TEST_TIME2 = #TEST_TIME2#, TEST_VALUE = #TEST_VALUE#, TEST_VALUE2 = #TEST_VALUE2#, TEST_VALUE3 = #TEST_VALUE3# where TEST_ID=#TEST_ID# ]]> </update> <delete id="deleteTESTById" parameterClass="TEST"> delete from TEST where TEST_ID=#TEST_ID# </delete> </sqlMap>
该例子是 SQL Map最简单的形式。它使用了 SQL Map框架中一个特性,根据匹配
的名字将 ResultSet 的列映射成 Java Bean 的属性(或Map的 key值)。
#value#符号是输入参数,该符号表示使用了输入参数。
⑴ ID
指定了操作 ID,之后我们可以在代码中通过指定操作 id 来执行此节点所定
义的操作,如:
sqlMap.update("updateTEST",test);
⑵ parameterClass
指定了操作所需的参数类型,此例中 update 操作以 TEST 类型的对象作为参数,
目标是将提供的 TEST 实例更新到数据库。
⑶ <![CDATA[……]]>
通过<![CDATA[……]]>节点,可以避免 SQL 中与 XML 规范相冲突的字符对
XML映射文件的合法性造成影响。
⑷ 执行更新操作的 SQL,这里的 SQL 即实际数据库支持的 SQL 语句,将由
ibatis填入参数后交给数据库执行。
使用 SQL Map 框架编程
我们完成了所有的配置文件和映射文件,就剩下的应用的编码工作了。首先要设
置SQL Map, 读入刚创建好的SQL Map XML配置文件。 SqlMapClient 对象是线程安全,
并且应持久生存。对于一个特定的应用,只需进行一次 SqlMap 配置。
因此,它可以作为基类的一个静态对象(即 DAO对象的基类) ,或者,
如果您想让它有更大的作用范围,可以把它封装在方便使用的类中。
例1:数据写入操作(insert):
FileReader fileReader = new FileReader("SqlMapConfig.xml"); SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(fileReader); fileReader.close(); TEST test = new TEST(); test.setTEST_ID(BigDecimal.valueOf(51212)); test.setTEST_NAME("testString"); Object key = sqlMapClient.insert("insertTEST", test);
例2:数据更新操作(update):
TEST test = new TEST(); test.setTEST_ID(BigDecimal.valueOf(51212)); test.setTEST_NAME("testString2"); int update = sqlMapClient.update("updateTEST", test);
例3:数据删除操作(delete):
TEST test = new TEST(); test.setTEST_ID(BigDecimal.valueOf(51212)); int number = sqlMapClient.delete("deleteTESTById", test);
例4:数据查询操作(select):
List list = sqlMapClient.queryForList("selectTEST");
import java.io.FileReader; import java.math.BigDecimal; import java.sql.SQLException; import java.sql.Timestamp; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class OracleTest { public static void main(String[] args) throws Exception { FileReader tarReader = new FileReader("SqlMapConfigOra.xml"); SqlMapClient targetClient = SqlMapClientBuilder.buildSqlMapClient(tarReader); tarReader.close(); long currentTimeMillis = System.currentTimeMillis(); Timestamp timestamp = new Timestamp(currentTimeMillis); TEST t = new TEST(); t.setTEST_ID(BigDecimal.valueOf(51212)); t.setTEST_NAME("testString"); t.setTEST_TIME(timestamp); t.setTEST_TIME2(timestamp); t.setTEST_VALUE(BigDecimal.valueOf(51200)); t.setTEST_VALUE2(BigDecimal.valueOf(51200)); t.setTEST_VALUE3(BigDecimal.valueOf(51200)); targetClient.insert("insertTEST", t); for (TEST test : targetClient.queryForList("selectTEST")) { System.out.println(test); } } }
发表评论
-
Java动态编译笔记
2012-12-28 19:11 3964import java.io.File; import ... -
XML Schema 简述
2009-06-16 17:44 1640简介 XML Schema 是 W3C 标准。 XML Sch ... -
JAXB的简单使用
2009-06-16 16:41 2936环境: jdk1.6.0_07 JavaTM Architec ... -
面向对象的原理
2009-06-10 16:17 2954开放封闭原理(Open Closed Principle) 类 ... -
重构学习笔记
2009-03-19 22:48 1178引子 过度设计,是指代 ... -
操作String的几个Method
2009-02-09 14:08 3596public static String join ... -
EHCache简单使用
2009-01-02 23:17 25952关于缓存的话题,在坛子里已经有很多讨论,简单的来说,如果一个应 ... -
使用Jakarta-ORO库的几个例子
2008-08-26 19:14 13914简介 Jakarta-ORO是最全面以及优化得最好的正 ... -
Oracle入库速度测试(Java版)
2008-08-26 19:08 2865测试环境: Intel Xeon 2.4G四核心 2. ... -
使用IReport制作JasperReport报表
2007-08-31 19:08 2666JasperReport是一个报表生成工具,用户须按照它编写的 ... -
使用XMLBeans简化XML操作
2007-08-31 18:56 1926环境: jdk1.5.0_12 xmlbeans- ... -
Spring一瞥
2007-07-29 10:39 1273Spring的特色: The Inv ... -
Struts来龙去脉
2007-07-29 08:49 1577Struts的特色: 使用框架的好处是,你将从别人已经付诸 ...
相关推荐
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于java的驾校收支管理可视化平台的开题报告
时间序列 原木 间隔5秒钟 20241120
毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip
基于java的网上购物商城的开题报告
Delphi人脸检测与识别Demo1fdef-main.zip
基于java的咖啡在线销售系统的开题报告
基于java的自助医疗服务系统的开题报告.docx
内容概要:本文档全面介绍了Visual Basic(VB)编程语言的基础知识和高级应用。首先概述了VB的基本特性和开发环境,随后详细讲述了VB的数据类型、变量、运算符、控制结构、数组、过程与函数、变量作用域等内容。接着介绍了窗体设计、控件使用、菜单与工具栏的设计,文件操作、数据库访问等关键知识点。最后讨论了VB的学习方法、发展历史及其在桌面应用、Web应用、数据库应用、游戏开发和自动化脚本编写等领域的广泛应用前景。 适合人群:初学者和中级程序员,尤其是希望快速掌握Windows桌面应用开发的人群。 使用场景及目标:①掌握VB的基础语法和开发环境;②学会使用VB创建复杂的用户界面和功能完整的应用程序;③理解数据库操作、文件管理和网络编程等高级主题。 其他说明:Visual Basic是一种简单易学且功能强大的编程语言,尤其适合用于开发Windows桌面应用。文中不仅覆盖了基础知识,还包括了大量的实用案例和技术细节,帮助读者快速提升编程技能。
基于java的疫情期间高校防控系统开题报告.docx
基于springboot+vue社区老年人帮扶系统源码数据库文档.zip
基于java的超市商品管理系统的开题报告.docx
基于SpringBoot房屋买卖平台源码数据库文档.zip
xdu限通院23微处理器系统与应用大作业(两只老虎),适应于汇编语言keil软件,
<项目介绍> - 新闻类网站系统,基于SSM(Spring、Spring MVC、MyBatis)+MySQL开发,高分成品毕业设计,附带往届论文 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
基于java的学生网上请假系统的开题报告.docx
社会经济繁荣发展的今天,电子商务得到了飞速发展,网上交易越来越彰显出其独特的优越性,在人们的日常生活中,出现了各种类型的交易网站。其中一个就是车辆易主交易网站,它是一个服务于用户买卖二手车辆的交易网站,为用户提供了平等互利、方便快捷的网上交易平台,通过这一类型的网站,用户可自由出售和购买车辆。 本课题主要根据车辆本身的特性,充分发挥互联网的特点与优势,构建一个以二手车辆为商品、基于互联网平台的车辆易主业务交易管理系统,并根据车辆易主业务交易管理系统的应用需求,进行需求分析,进而对网站系统作规划设计。采用IDEA为运行平台,以SSH为框架,运用HTML语言、JSP技术、MySql数据库、JSP与后台数据库链接等关键技术建设二手车网上交易系统,构建车辆易主交易系统的会员注册与登录,网站首页展示、用户发布商品车辆,用户求购商品车辆,分页浏览、购物系统、用户后台管理、管理员用户后台管理等功能,并使这些功能得以实现并更好为用户服务。网站整体构建完成且测试成功后,用户可以进入网站进行注册、登录,登录后,用户可以在网站上发布自己的闲置车辆或者寻找想要购买的车辆,还可以收藏车辆,管理发布和收藏的车辆,
SQLite3的向量扩展库,windows dll,版本0.1.5
基于C++实现(控制台)商品库存管理系统