- 浏览: 145086 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
hzyhush:
Java模拟登录新浪微博 -
meaemz:
大神,这是完整的代码吗?怎么没有没有main(),我要怎么调用 ...
Java模拟登录新浪微博 -
meaemz:
大神,这是完整的代码吗?怎么没有没有main(),是要自己写一 ...
Java模拟登录新浪微博 -
c_he_n:
最后执行结果怎么获取到url
Java模拟登录新浪微博 -
hvang1988:
18.JEgg Java多线程开发包 ,这个到底怎么样哦,资料 ...
Java 常用的第三方组件
1、本文通过几个简单的示例,实现ibatis的增删改查的功能。
2、构建数据库表,contact表,建表语句如下:(使用的是mysql数据库)
contact表:
3、构建相应的JavaBean
Contact.java
4、ibatis配置文件详解
SqlMapConfig.xml文件配置如下:
1、<properties>元素,SQL Map配置文件拥有唯一的<properties>元素,用于在配置文件中使用标准的Java 属性文件(name=value)。这样做后,在属性文件中定义的属性可以作为变量在SQL Map配置文件激情包含的所有SQL Map映射文件中引用。
2、<setting>元素
maxRequests:同时执行SQL预计的最大线程数。
maxSessions:同一时间内活动的最大session数。
maxTransactions:同时进入SqlMapClient.startTransaction()的最大线程数。
cacheModelsEnabled:全局性地启用和禁用SqlMapClient的所有缓存model。
lazyLoadingEnabled:全局性地启用或禁用SqlMapClient的所有延迟加载。
enhancementEnabled:全局性地启用或禁用运行时字节码增强,以优化访问JavaBean属性的性能,同时优化延迟加载的性能。
useStatementNamespaces:如果启用本属性,必须使用全限定名来引用mapped statement。Mapped statement的全限定名由sql-map的名称和mapped-statement的名称合成。
3、<typeAlias>元素
<typeAlias>元素为一个通常较长的、全限定类名指定一个较短的别名。
<typeAlias alias="shortname" type="com.long.class.path.Class"/>
4、<transactionManager>元素
<transactionManager>元素包含三个事物管理器分别是,JDBC,JTA和EXTERNAL
JDBC:通过常用的Connection commit()和rollback()方法,让JDBC管理事务。
JTA:本事务管理器使用一个JTA全局事务,使用SQL Map的事务包括在更大的事务范围内,这个更大的事务范围可能包括了其他的数据库和事务资源。
EXTERNAL:这个配置可以自己管理事务。
5、<datasource>元素
<datasource>是<transactionManager>的一部分,为SQL Map数据源设置了一系列参数。目前SQL Map架构只提供了三个DataSourceFactory,也可以添加自己的实现。
SimpleDataSourceFactory:DataSource提供了一个基本的实现,适用于J2EE容器提供DataSource的情况。
DbcpDataSourceFactory:实现使用Jakarta DBCP(Database Connection Pool)的DataSource API提供连接池服务。适用于应用/Web容器不提供DataSource服务的情况,或执行一单独的应用。
JndiDataSourceFactory:在应用容器内部从JNDI Context中查找DataSource实现。当使用应用服务器,并且服务器提供了容器管理的连接池和相关DataSource实现的情况下,可以使用JndiDataSourceFactory。
6、<sqlMap>元素
<sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。每个SqlMapClient对象使用的所有SQL Map映射文件都要在此声明。映射文件作为stream resource从类路径或URL读入。
jdbc.properties配置文件
Contact.xml文件
5、测试类如下:
IbatisExample.java如下:
对应Contact.xml文件,注释的指导,可以将注释除掉一个一个实现该功能。
在上面示例中调用存储过程的sql如下,先在mysql数据库中执行如下sql:
2、构建数据库表,contact表,建表语句如下:(使用的是mysql数据库)
contact表:
drop table if exists contact; create table contact( id int(10) not null auto_increment, firstName varchar(20) , lastName varchar(20), email varchar(20), primary key(id) ); insert into contact(firstName,lastName,email) values('tang','lj','tang@126.com'); insert into contact(firstName,lastName,email) values('li','lin','ll@126.com'); insert into contact(firstName,lastName,email) values('wang','lihong','lh@126.com'); insert into contact(firstName,lastName,email) values('cen','fen','cf@126.com');
3、构建相应的JavaBean
Contact.java
package com.tonyj.pojo; public class Contact { private String firstName; private String lastName; private String email; private int id; //相应的getter和setter方法,构造方法 }
4、ibatis配置文件详解
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> <properties resource="jdbc.properties"/> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="true"/> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${jdbc.driverClassName}"/> <property name="JDBC.ConnectionURL" value="${jdbc.url}"/> <property name="JDBC.Username" value="${jdbc.userName}"/> <property name="JDBC.Password" value="${jdbc.password}"/> </dataSource> </transactionManager> <sqlMap resource="Contact.xml"/> </sqlMapConfig>
1、<properties>元素,SQL Map配置文件拥有唯一的<properties>元素,用于在配置文件中使用标准的Java 属性文件(name=value)。这样做后,在属性文件中定义的属性可以作为变量在SQL Map配置文件激情包含的所有SQL Map映射文件中引用。
2、<setting>元素
maxRequests:同时执行SQL预计的最大线程数。
maxSessions:同一时间内活动的最大session数。
maxTransactions:同时进入SqlMapClient.startTransaction()的最大线程数。
cacheModelsEnabled:全局性地启用和禁用SqlMapClient的所有缓存model。
lazyLoadingEnabled:全局性地启用或禁用SqlMapClient的所有延迟加载。
enhancementEnabled:全局性地启用或禁用运行时字节码增强,以优化访问JavaBean属性的性能,同时优化延迟加载的性能。
useStatementNamespaces:如果启用本属性,必须使用全限定名来引用mapped statement。Mapped statement的全限定名由sql-map的名称和mapped-statement的名称合成。
3、<typeAlias>元素
<typeAlias>元素为一个通常较长的、全限定类名指定一个较短的别名。
<typeAlias alias="shortname" type="com.long.class.path.Class"/>
4、<transactionManager>元素
<transactionManager>元素包含三个事物管理器分别是,JDBC,JTA和EXTERNAL
JDBC:通过常用的Connection commit()和rollback()方法,让JDBC管理事务。
JTA:本事务管理器使用一个JTA全局事务,使用SQL Map的事务包括在更大的事务范围内,这个更大的事务范围可能包括了其他的数据库和事务资源。
EXTERNAL:这个配置可以自己管理事务。
5、<datasource>元素
<datasource>是<transactionManager>的一部分,为SQL Map数据源设置了一系列参数。目前SQL Map架构只提供了三个DataSourceFactory,也可以添加自己的实现。
SimpleDataSourceFactory:DataSource提供了一个基本的实现,适用于J2EE容器提供DataSource的情况。
DbcpDataSourceFactory:实现使用Jakarta DBCP(Database Connection Pool)的DataSource API提供连接池服务。适用于应用/Web容器不提供DataSource服务的情况,或执行一单独的应用。
JndiDataSourceFactory:在应用容器内部从JNDI Context中查找DataSource实现。当使用应用服务器,并且服务器提供了容器管理的连接池和相关DataSource实现的情况下,可以使用JndiDataSourceFactory。
6、<sqlMap>元素
<sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。每个SqlMapClient对象使用的所有SQL Map映射文件都要在此声明。映射文件作为stream resource从类路径或URL读入。
jdbc.properties配置文件
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/vin jdbc.userName=root jdbc.password=sa
Contact.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> <typeAlias alias="Contact" type="com.tonyj.pojo.Contact"/> <!-- ibatis查询操作 --> <select id="getAll" resultClass="Contact"> select * from contact </select> <!-- ibatis插入1 --> <insert id="insert" parameterClass="Contact"> insert into contact(firstName,lastName,email) values(#firstName#,#lastName#,#email#) <selectKey resultClass="int" keyProperty="id"> select last_insert_id() as id </selectKey> </insert> <!-- ibatis插入操作2 --> <parameterMap class="Contact" id="insert-contact-parameter"> <parameter property="lastName"/> <parameter property="firstName"/> <parameter property="email"/> </parameterMap> <statement id="insertContact" parameterMap="insert-contact-parameter"> insert into contact(lastName,firstName,email) values (?,?,?); </statement> <!-- ibatis删除操作 --> <delete id="deleteContactById" parameterClass="int"> delete from Contact where id=#id# </delete> <!-- ibatis更新操作 --> <update id="updateById" parameterClass="int"> update Contact set lastName="tonyJ" where id=#id# </update> <!-- ibatis根据id查询 --> <resultMap class="Contact" id="result"> <result property="id" column="id"/> <result property="firstName" column="firstName"/> <result property="lastName" column="lastName"/> <result property="email" column="email"/> </resultMap> <select id="getById" resultMap="result"> select * from contact where id=#id# </select> <!-- ibatis调用mysql存储过程 --> <procedure id="storedInfo" resultClass="Contact"> {call showData()} </procedure> <!-- ibatis模糊查询 --> <select id="selectByName" parameterClass="String" resultClass="Contact"> select * from contact where firstName like '%$firstName$%' </select> <!-- ibatis分页查询1 --> <select id="getByPage" parameterClass="java.util.Map" resultClass="Contact"> select * from contact <isParameterPresent> <isNotNull property="orderById"> order by $orderById$ </isNotNull> <isNotNull property="limitClauseStart"> limit $limitClauseStart$,$limitClauseCount$ </isNotNull> </isParameterPresent> </select> <!--ibatis 分页查询2 --> <select id="getByPage1" parameterClass="java.util.Map" resultClass="Contact"> select * from contact </select> </sqlMap>
5、测试类如下:
IbatisExample.java如下:
package com.tonyj.test; import java.io.Reader; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.tonyj.pojo.Contact; public class IbatisExample { public static void main(String[] args) throws Exception{ Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml"); SqlMapClient sqlMap=SqlMapClientBuilder.buildSqlMapClient(reader); //查询 // System.out.println("All Contacts"); // List<Contact> contacts=(List<Contact>)sqlMap.queryForList("getAll",null); // for(Contact c:contacts){ // System.out.println(" "+c.getId()+"-->"+c.getFirstName()+"-->" // +c.getLastName()+"-->"+c.getEmail()); // } //插入1 // System.out.println("*------insert Contact Table------------*"); // Contact contact=new Contact("Amit","Kumar","amit@yes.com"); // sqlMap.insert("insert",contact); //插入2 System.out.println("*------insert Contact Table------------*"); Contact contact=new Contact("firstName","lastName","tang@yes.com"); sqlMap.insert("insertContact",contact); //删除 // int i=sqlMap.delete("deleteContactById", 1); // System.out.println("i="+i); //更新 // sqlMap.update("updateById", 3); //根据id查询 // Contact contact=(Contact) sqlMap.queryForObject("getById", new Integer(3)); // System.out.println(contact.toString()); //调用存储过程 // List<Contact> contacts=(List<Contact>)sqlMap.queryForList("storedInfo", null); // Contact contact=null; // for(Contact c:contacts){ // System.out.println(c.toString()); // } //模糊查询 // List<Contact> contacts=(List<Contact>)sqlMap.queryForList("selectByName","t"); // Contact contact=null; // for(Contact c:contacts){ // System.out.println(c.toString()); // } //分页1 // Map<String,Object> map=new HashMap<String,Object>(); // map.put("orederById"," id asc"); // map.put("limitClauseStart",5); // map.put("limitClauseCount",5); // List<Contact> result=(List<Contact>)sqlMap.queryForList("getByPage", map); // for(Contact c:result){ // System.out.println(c.toString()); // } //分页2 // int skip=5; // int max=4; // String sql="getByPage1"; // @SuppressWarnings("unchecked") // List<Contact> contacts=(List<Contact>)sqlMap.queryForList(sql,skip,max); // for(Contact c:contacts){ // System.out.println(c.toString()); // } } }
对应Contact.xml文件,注释的指导,可以将注释除掉一个一个实现该功能。
在上面示例中调用存储过程的sql如下,先在mysql数据库中执行如下sql:
--更改命令结束符(因为在procedure中经常要用到默认的命令结束符--分号(;) --所以在创建procedure的时候需要定义新的结束符以说明创建procedure的命令结束) --这里将结束符号改成美元符号--$ delimiter $ create procedure vin.showData() begin select * from Contact; end $
评论
3 楼
lzh1987626
2014-11-27
不错,我刚学,很需要这个
2 楼
xiaosheng_papa
2014-06-12
楼上还纠错啊,直接String也可以的。。。。
写的很好,适合初学
写的很好,适合初学
1 楼
niclg
2012-07-23
纠错:Context.xml第53行应为 parameterClass="java.lang.String"
发表评论
-
项目操作日志记录(方法级别)
2019-06-12 16:45 1016在项目中要记录操作日志,可以通过spring的Aop技术去实现 ... -
spring mybatis多数据源切换(2)
2019-06-12 16:35 463在上一篇文章中写到,多数据源的切换是使用Java代码调用的,现 ... -
spring mybatis多数据源切换(1)
2019-06-05 23:00 459项目中既要连接mysql数据库又要连接sever sql数据库 ... -
Spring定时器的功能开发
2016-12-05 16:59 22051、使用quartz.jar包实现定时器功能,首先在项目中引入 ... -
Maven多模块SSM框架搭建
2016-12-05 15:07 1594整合SSM和Maven多模块,搭建一个简单的开发架构,具体的做 ... -
Hibernate缓存机制分析
2015-04-09 23:18 692复制代码 您可以通过点击 右下角 的按钮 来对文章内容作出评价 ... -
Spring管理事务的几种方式
2015-04-09 22:33 997把Hibernate用到的数据源Datasource,Hibe ... -
Hibernate注解说明
2015-04-03 18:03 844/** * * @author liuguang ... -
struts2请求过程源码分析
2015-02-04 21:08 659struts2请求过程源码分析 这篇文章写的很好 分析很透彻 ... -
spring和mybatis泛型接口的整合(一)
2015-02-03 20:42 204621、这次使用spring和mybatis进行整合,使用spri ... -
spring和ibatis综合应用入门示例
2012-03-20 20:00 12901、最近几天在学习ibatis ... -
spring开发所需jar包
2012-03-14 09:17 1177spring2.5开发所需的jar包,上传到这里,方便下载使用 ... -
ibatis自动生成主键
2012-03-13 10:53 1081很多数据库支持自动生成主键的数据类型如(mysql)。不 ... -
ibatis一对多示例
2012-03-12 15:20 15781、在实际开发中,iBATIS框架已经很普遍的使用,然而我们常 ... -
hibernate入门示例展示
2011-06-30 17:00 1273有很长一段时间没有使用hibernate进行开发了,最近闲来无 ...
相关推荐
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得...通过学习这个Ibatis入门教程,你可以了解并掌握如何在Java应用中使用Ibatis进行数据操作,为后续的进阶学习和项目开发打下坚实的基础。
【标题】:Ibatis Ibatis入门教程 【描述】:Ibatis是一款优秀的持久层框架,它简化了Java应用与数据库之间的交互,通过提供一个映射SQL的XML或注解方式,使得开发人员能够将精力集中在业务逻辑上,而不是繁琐的...
### iBatis入门教程知识点详解 #### 一、iBatis简介 iBatis是一个开源框架,用于简化Java应用程序与数据库之间的交互。它基于SQL语句执行查询,并将结果映射到Java对象上,从而降低了Java层代码与SQL语句之间的...
**ibatis入门教程与开发指南** Ibatis,全称MyBatis-iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以使用简单...
### Ibatis入门教程知识点详解 #### 一、Ibatis简介 Ibatis是一个基于Java的开源持久层框架,它提供了一种灵活的方式将对象映射到关系型数据库中,支持SQL查询和更新操作,并且能够自动处理结果集。与Hibernate等...
### 框架iBATIS入门教程 #### 一、iBATIS框架介绍与学习目的 iBATIS是一个开源框架,用于简化Java应用程序与数据库之间的交互。它通过提供一种称为SQL Maps的方式,来帮助开发者更好地管理和执行SQL语句。本教程...
本文基于“iBatis入门教程”的内容,深入解析iBatis框架的基础知识,特别是如何处理一对多和多对一的关联关系。 ### 一对多和多对一关系 在关系型数据库中,一对多和多对一关系是常见的数据关联模式。一对多指的是...
**Ibatis 入门教程** ...通过这个入门教程,你将掌握 Ibatis 的基础用法,从而能够进行基本的数据库操作。在实际项目中,随着对 Ibatis 的深入理解和应用,你会发现它是一个强大且灵活的工具,能有效提高开发效率。
**IBatis**,全称是**iBatis**,是一个基于Java的持久层框架,它主要解决了数据库操作与业务逻辑层的分离问题,使得开发者能够更专注于SQL和业务逻辑的编写,而无需...这些文档将是你学习和掌握IBatis的重要参考资料。
在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org....
这版PPT仅供学习使用,是ibatis入门的知识,用PPT做的,很容上手。
Ibatis,现更名为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射和对象关系映射,使得开发者可以编写动态、灵活的SQL语句,并...通过学习和实践,开发者可以有效地提升数据库操作的效率,减少代码的复杂性。
**Ibatis 入门教程全集** Ibatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。Ibatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。Ibatis 可以使你更好地将数据库层与业务逻辑...
通过学习本教程,你将能够掌握iBATIS的基本用法,包括配置、SQL Maps的编写、Data Mapper接口的使用,以及如何在实际项目中进行动态SQL操作。在理解这些基础后,你可以进一步探索更高级的特性,如缓存机制、复杂事务...
《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...
**iBatis快速入门教程中文版** iBatis 是一个优秀的开源持久层框架,它允许开发者将SQL语句与Java代码分离,使得数据库操作更加灵活和可维护。本教程将帮助初学者快速理解和掌握iBatis的核心概念和使用方法。 **一...
### iBatis简明教程及快速入门 #### 一、iBatis简介 iBatis是一个开源框架,用于实现Java应用程序中的对象关系映射(Object Relational Mapping, ORM)。相较于其他ORM框架如Hibernate,iBatis更加轻量级且易于...