这一两个星期是学期结束的时候,也是各个项目交的时候,于是大忙特忙之下,人的身体状况也不佳。而且为了machine learning,还熬了在墨尔本的第一次夜。直到现在都还没怎么缓过来。还好,现在闲下来了,离考试时间还有三个星期,闲暇之余,去图书馆逛了逛,看到了这本崭新的iBatis in Action。很早就听说过这个持久层的框架,一般来说在你听说到Hibernate的时候,iBatis这个名字也会冒出来。一直都觉得hibernate才是这一层里最有用的东西,就没有关心过太多iBatis,但这次看到了这本书,感觉上心动了一下,想想这几天也没什么事,书也不厚,就借回来看看好了。于是就这样开始了我的iBatis的学习路程。
目前看了前面的三章,用eclipse小试了一把,感觉这玩意的确很小巧实在。使用很容易,不用像其他的大型框架配置半天,它就只有一个jar,大小才376K,里面就包括了所有的东西了。这点是最吸引我的地方,毕竟小嘛,操作容易,上手也快。的确写起来很快,虽然我目前只做了一个很小的select的实验。对于真正的JAVA调用代码,其实就只有四行:
第一行是申明了你的sqlMapConfiguration文件的位置,第二行是读入这个配置文件,第三行是用这个文件生成sqlMap,最后一行就是调用其中的各种方法了。这样看来如果把配置文件给写好了的话,前面的JAVA简直就是太小儿科了。
回头来看看它的配置文件。分为两种,一种就是上面提到的sqlMapConfiguration,这是整个程序的全局配置地点。包括了你的数据库的驱动,地址,用户名,密码等等这些常用的connection参数:
上面这段代码就是一个简单的实例,其中的值是在properties文件中。可以看到非常直观易懂。如果你会JDBC,就没有什么好解释的了。如果你不懂,估计看了你也知道一二了。
接下来的关键部分就是上面这段代码中的sqlMap,这就是iBatis的核心部分,讲数据库的sql语句如何MAP到OO上来。
看了以后也觉得非常的容易,不就是一个select语句被包在一个select的标签里吗。iBatis将sql语句划分为了input和output两部分,在上面这个语句中,你要输入的monthid就是input,得到的结果*就是output,返回的是一个hashmap。那么在java程序中就可以直接调用这些hashmap了。其实更好的是能够写出对应的返回值的bean,这样操作起来更加规范一些。
有一个小小的问题就是目前来说,这些XML配置文件的代码都得自己手写,于是这也就造成了会写错的地方,特别是DOCTYPE部分,下午我自己写的时候,就是在这里抄错了一个标点符号和多写了一个字母,结果BAIDU来GOOGLE去,都解决不了问题,最终还是发现了这点点的敲击键盘错误。要是以后eclipse能自动生成配置文件格式并检验就好了。我个人觉得现在应该也有了这种插件吧,还是明天再研究研究。
以上所列出的就是第一天学习的iBatis的一点点总结。很基础,每一个模块都还有很多东西要深究,这也就是后面几章要讲的内容。就我个人看来,iBatis相当于就是一个半自动化的ORM工具,毕竟各种SQL语句还是得自己写,但是他能够将其MAP到OO,也算是一种很基础的封装,的确比直接调用JDBC显得要模式清楚的多。所以对于JDBC很熟悉的人来说,看这些东西真的是很容易的一件事。而且再次说的是,iBatis真的是小巧,和Hibernate比起来呵呵。不过自然hibernate有它的强大之处,打算等假期结束了,再重新回头来看一次Hibernate,也许会有更多的收货。
PS:iBatis还可以在.net上运行,现在是月底,网速没有了,明天到学校去下一个.net版本的跑跑C#看效果如何。
目前看了前面的三章,用eclipse小试了一把,感觉这玩意的确很小巧实在。使用很容易,不用像其他的大型框架配置半天,它就只有一个jar,大小才376K,里面就包括了所有的东西了。这点是最吸引我的地方,毕竟小嘛,操作容易,上手也快。的确写起来很快,虽然我目前只做了一个很小的select的实验。对于真正的JAVA调用代码,其实就只有四行:
- try{
- String resource="com/featheast/chap2/SqlMapConfig.xml";
- Reader reader=Resources.getResourceAsReader(resource);
- SqlMapClient sqlMap=SqlMapClientBuilder.buildSqlMapClient(reader);
- List list=sqlMap.queryForList("getAllUsers","1");
- System.out.println("Selected "+list.size()+" records.");
- for(int i=0;i<list.size();i++){
- System.out.println(list.get(i));
- }
- }catch(Exception e){
- e.printStackTrace();
- }
- }
回头来看看它的配置文件。分为两种,一种就是上面提到的sqlMapConfiguration,这是整个程序的全局配置地点。包括了你的数据库的驱动,地址,用户名,密码等等这些常用的connection参数:
- <sqlMapConfig>
- <properties resource="com/featheast/chap2/db.properties"/>
- <transactionManager type="JDBC">
- <dataSource type="SIMPLE">
- <property name="JDBC.Driver"
- value="${driver}"/>
- <property name="JDBC.ConnectionURL"
- value="${url}"/>
- <property name="JDBC.Username"
- value="${user}"/>
- <property name="JDBC.Password"
- value="${password}"/>
- </dataSource>
- </transactionManager>
- <sqlMap resource="com/featheast/chap2/SqlMap.xml"/>
- </sqlMapConfig>
接下来的关键部分就是上面这段代码中的sqlMap,这就是iBatis的核心部分,讲数据库的sql语句如何MAP到OO上来。
- <sqlMap>
- <select id="getAllUsers" parameterClass="string" resultClass="hashmap">
- SELECT * FROM userinfo WHERE month = #monthId#
- </select>
- </sqlMap>
有一个小小的问题就是目前来说,这些XML配置文件的代码都得自己手写,于是这也就造成了会写错的地方,特别是DOCTYPE部分,下午我自己写的时候,就是在这里抄错了一个标点符号和多写了一个字母,结果BAIDU来GOOGLE去,都解决不了问题,最终还是发现了这点点的敲击键盘错误。要是以后eclipse能自动生成配置文件格式并检验就好了。我个人觉得现在应该也有了这种插件吧,还是明天再研究研究。
以上所列出的就是第一天学习的iBatis的一点点总结。很基础,每一个模块都还有很多东西要深究,这也就是后面几章要讲的内容。就我个人看来,iBatis相当于就是一个半自动化的ORM工具,毕竟各种SQL语句还是得自己写,但是他能够将其MAP到OO,也算是一种很基础的封装,的确比直接调用JDBC显得要模式清楚的多。所以对于JDBC很熟悉的人来说,看这些东西真的是很容易的一件事。而且再次说的是,iBatis真的是小巧,和Hibernate比起来呵呵。不过自然hibernate有它的强大之处,打算等假期结束了,再重新回头来看一次Hibernate,也许会有更多的收货。
PS:iBatis还可以在.net上运行,现在是月底,网速没有了,明天到学校去下一个.net版本的跑跑C#看效果如何。