`
renjie120
  • 浏览: 237907 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D11bba82-ec4a-3d31-a3c0-c51130c62f1c
Java应用集锦
浏览量:22941
社区版块
存档分类
最新评论

总结:ibatis对derby数据库操作,以及与spring的集成(ibatis's hello world)

    博客分类:
  • j2ee
阅读更多

转载请注明出处: http://renjie120.iteye.com/

 

用过ibatis之后,感觉hibernate太复杂.

使用过derby数据库之后,感觉mysql也很大.

helloWorld工程很重要,学习新东西完成helloWorld就心里有底了.


闲来无聊,看了一下这些东西,发现derby好好玩.花了几天时间学习了一下基本的ibatis,derby的知识,然后集合了spring框架.

 

遇到了几个小小的问题,都一一解决了,这里好好总结一下以后再次遇到就不用浪费时间百度了.

 

1.使用jdbc连接derby数据库的基本语句如下,注意有用户名,密码 的情况,要使用properties文件包含用户名和密码,然后通过properties读值:

private static Properties properties = null;
	static {
		// getResourceAsStream的参数"/application.properties"表示以当前类的包的根路径为基准路径   
		InputStream inputStream = DerbyUtil.class
				.getResourceAsStream("/derby.properties");
		properties = new Properties();
		try {
			properties.load(inputStream);
			inputStream.close();
		} catch (IOException e) {
			System.out.println("获取系统属性文件异常:");
		}
	}

	/**
	 * 取得数据库连接
	 * @return
	 */
	public static Connection getCon() {
		Connection con = null;
		String driver = "org.apache.derby.jdbc.EmbeddedDriver";
		String connectionURL = "jdbc:derby:testIbatis;create=true;";
		// 装载数据库驱动.
		try {
			Class.forName(driver);
			System.out.println(driver + " loaded. ");
		} catch (java.lang.ClassNotFoundException e) {
			System.err.print("ClassNotFoundException: ");
			System.out.println("缺少derby相关jar包!");
		}
		try {
			con = DriverManager.getConnection(connectionURL, properties);
		} catch (SQLException e) {
			System.out.println("出现异常.");
			errorPrint(e);
		}
		return con;
	}

 经常遇到的一个错误是:

--- Cause: java.sql.SQLException: Schema '.......' does not exist

原因就是因为数据库连接的用户名,密码有误!

上面的/derby.properties内容如下:注意用户名,密码的key!开始我写成了use,password(因为直接连接derby的话,配置用户名密码就是用user=;password=),结果找了半天!!

JDBC.Username=admin
JDBC.Password=admin

 

2.使用ibatis 的 sqlMapClient连接数据库的基本方式如下:不论什么数据库都是一样,derby,mysql,oracle都这样写.

public List getDises(Dis argVo) {
		String resource = "ibatis/SqlMapConfig.xml";
		SqlMapClient sqlMap = null;
		List ans = null;
		try {
			Reader reader = Resources.getResourceAsReader(resource);
			sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		} catch (Exception e) {
			e.printStackTrace();
		}
		// sqlMap系统初始化完毕,开始执行getAllUser操作
		try {
			sqlMap.startTransaction();
			ans =  sqlMap.queryForList("getDises", argVo);
			sqlMap.commitTransaction();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		} finally {
			try {
				sqlMap.endTransaction();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return ans;
	}

 

3.上面的写法很多都是重复的部分,所以可以使用模板类进行简化书写,要继承SqlMapDaoTemplate这个类,然后还要在ibatis基础配置文件上,再多添加一个配置文件DaoConfig.xml,一般还会要多添加一个类叫做DaoConfig.java.

DaoConfig.xml配置文件一般如下所示:

 

<daoConfig>
	<context>
		<transactionManager type="SQLMAP">
			<property name="SqlMapConfigResource"
				value="ibatis/SqlMapConfig.xml" />
		</transactionManager>

		<dao interface="ibatis.newTest.IDistrict"
			implementation="ibatis.dao.NewTestDistrict" />
	</context>
</daoConfig>

 

实现的方式网上很多,但是我遇到了一个很郁闷的问题,找了很久,错误如下:

Exception in thread "main" java.lang.ClassCastException: $Proxy1
    at ibatis.dao.NewTestDistrict.main(NewTestDistrict.java:24)


找了半天,原来在写测试类的时候,

DaoManager daoManager = DaoConfig.getDaoManager();

NewTestDistrict test= ( NewTestDistrict ) daoManager.getDao(IDistrict.class);

上面应该是接口的类型,不应该写具体类!!

改成下面就好了:

IDistrict test= (IDistrict ) daoManager.getDao(IDistrict.class);

 

4.spring和ibatis的集成,网上代码一大把...在demo中也有...

 

 

 

5.demo工程中的内容:

 

derby文件夹:DerbyUtil:包含derby数据库初始化的方法

ibatis文件夹:

             dao文件夹:NewTestDistrict.java    使用ibatis中的模板工具类进行持久化操作

             newTest文件夹:TestDistrict.java       使用基本的ibatis语句进行持久化操作

             springIbatis文件夹:DistrictSpring.java    spring和Ibatis集成测试类

sql文件夹:数据库脚本

 

6.derby数据库

Derby数据库文件夹:testIbatis文件夹,在第一次运行工程之后,derby数据文件建立在src同级目录.

  • 大小: 11 KB
分享到:
评论
1 楼 FeiXing2008 2010-04-17  
引用

用过ibatis之后,感觉hibernate太复杂.

使用过derby数据库之后,感觉mysql也很大.

helloWorld工程很重要,学习新东西完成helloWorld就心里有底了.


很有同感。

相关推荐

    ibatis基本操作数据库

    在实际项目中,我们通常结合Spring框架使用iBatis,通过Spring的SqlSessionTemplate和SqlSessionDaoSupport等组件,进一步简化数据库操作,提高代码的可测试性和可维护性。 总之,iBatis提供了一种灵活的数据库操作...

    spring ibatis整合所需jar包

    Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等特性,而iBatis则是一个优秀的持久层框架,它将SQL语句与Java代码分离,使得数据库操作更加灵活和易于维护。将两者整合可以实现松...

    Spring与iBATIS的集成

    Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...

    ibatis入门--对数据库的操作

    【ibatis入门--对数据库的操作】这篇文章主要讲解了如何使用iBatis框架来操作数据库,iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提高了开发效率和代码的可维护性。以下是文章涉及的关键知识点: ...

    iBatis入门Helloworld

    3. **Mapper接口**:定义操作数据库的方法,比如`selectUserById(int id)`。这些方法与Mapper XML中的SQL语句相对应。 4. **Mapper XML文件**:包含具体的SQL语句和结果映射。比如,可以有一个名为`UserMapper.xml`...

    spring 集成ibatis

    当我们将 Spring 与 iBatis 集成时,我们可以利用 Spring 的强大管理能力来控制 iBatis 的 SqlSession 和 SqlSessionFactory,从而实现更优雅的数据库操作。以下是一些关于 Spring 集成 iBatis 的关键知识点: 1. *...

    spring与ibatis整合集成实例

    通过这样的集成,可以利用 Spring 的强大功能管理和协调整个应用程序,同时利用 iBATIS 的灵活性处理数据库操作,实现高效的企业级应用开发。在实际项目中,还需要根据具体需求进行调整和优化,例如使用 MyBatis 的...

    iBatis与数据库交互

    总结来说,iBatis是一个强大的数据库访问工具,它的灵活性、易用性和高效性使得开发者能更专注于业务逻辑,而不是数据库操作。通过熟练掌握iBatis,可以显著提升开发效率,降低项目的维护成本。在实际项目中,根据...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    spring与hibernate以及ibatis集成的实例和具体配置图解

    "TestSpringJDBC"可能是Spring对JDBC的测试代码,展示了如何在Spring中使用JDBC进行数据库操作,这在理解Spring与Hibernate或Ibatis集成时是基础。"TestSpringIbatis"则可能是Spring与Ibatis集成的测试案例,展示了...

    spring3.0+ibatis 集成实例

    Spring 3.0 和 iBatis 的集成是一个常见的企业级应用开发模式,它结合了Spring的强大依赖注入(DI)和面向切面编程(AOP)能力与iBatis灵活的SQL映射机制,实现了业务逻辑层与数据访问层的分离,提高了代码的可维护...

    spring+ibatis所需要的jar包

    当Spring和iBatis整合时,我们可以利用Spring的DI特性来管理iBatis的SqlSessionFactory和SqlSession,将数据库操作集成到Spring的Bean中。这样,我们可以在Spring的配置文件中定义数据源、事务管理器、...

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 &lt;bean id="sqlMapClient" class="org.spring...

    ibatis hello world code

    7. **第1章 iBATIS的理念**:可能会阐述iBATIS的设计哲学,比如它提倡的SQL语句与Java代码分离,以及对POJO(Plain Old Java Object)的友好支持。 8. **第9章 使用高速缓存提高性能**:讨论了iBATIS的缓存机制,...

    Spring struts ibatis Mysql 集成

    这个项目集成了Spring 2.5.5、Struts 2.1.6、iBatis 2.3.4以及MySQL 5.1数据库,使用IntelliJ IDEA 9作为开发环境。下面将详细介绍这些技术和它们的集成方式。 **Spring框架**: Spring是一个开源的Java平台,主要...

    webwork+ibatis+spring oracle c3p0 集成框架

    3. 集成Spring和iBatis:通过Spring的SqlSessionFactoryBean,将iBatis的配置信息注入到Spring中,实现对数据库操作的管理。 4. 配置WebWork和Spring:在WebWork的配置文件中,配置Spring的ApplicationContext加载...

    ibatis总结 ibatis ibatis ibatis ibatis

    本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. Ibatis SQL映射: Ibatis的主要特点是通过XML或注解定义SQL映射文件,将SQL语句与Java对象绑定。例如,`&lt;select&gt;`标签...

    访问数据库基本封装(spring/hibernate/ibatis)

    同时,Spring Data JPA和Spring Data JDBC则提供了更高层次的抽象,支持与ORM(对象关系映射)框架如Hibernate集成。Spring Data的Repository接口使得定义CRUD操作变得极其简单,只需定义接口,Spring就会自动实现...

Global site tag (gtag.js) - Google Analytics