读书人

mybatis3入门学习札记

发布时间: 2012-07-02 17:46:22 作者: rapoo

mybatis3入门学习笔记

MyBatis 的前身就是iBatis,是一个数据持久层(ORM)框架。? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis对JDBC进行了一次很浅的封装。

?

以前也学过iBatis,因为MyBatis是iBatis的升级版本,最初以为改动应该不大,实际结果是MyBatis对配置文件进行了一些大的改动,使整个框架更加方便人性化。

?

如果需要学习MyBatis,建议大家去MyBatis Google Code下载最新的API:http://code.google.com/p/mybatis/

注意api是有中文的,我想这对广大中国同行们是一个很不错的消息。

?

configuration配置文件

与hibernate一样,MyBatis也需要一个核心配置文件来指定数据源、连接池和ORM映射文件等等基础数据。下面是一个简单的配置:

?注意:

①xml中的标签顺序不能随便调换,否则会提示错误

②MyBatis使用自带的数据库连接池,不直接支持第三方连接池,不过网上有创建第三方连接池的方法

③以前别名(<typeAliases>)可以在sqlMap标签中创建,但现在需要在configuration标签中创建

④该配置文件可随意取名,在读取配置文件时指定该XML文件路径即可:

?

注意:

①resultType表示查询结果放到什么对象中,上面resultType="UserInfo"使用的是com.mybatisdemo.entity.UserInfo的别名,别名是在前面核心配置文件中设置的。

②还是resultType,用户会好奇:MyBatis怎么把每个值放到UserInfo这个javabean中,实际上在查询出数据后,MyBaits会去UserInfo中查找每个属性,如果属性与表中列名对应,则会把该列的数据赋给该属性。

③如果javabean与数据库表字段不对应,可以创建resultMap来实现ORM映射

?

?

?MyBatis API

前面XML文件已经实现了数据库连接配置和SQL配置,现在就需要用java代码去调用xml配置文件的sql即可实现数据库查询。

与hibernate类似,MyBatis也有两个核心对象:SqlSessionFactory和SqlSession。SqlSessionFactory顾名思义就是获取SqlSession对象的工厂,功能类似于jdbc中加载数据库驱动、创建connection连接,所以SqlSessionFactory资源非常重要,推荐该对象保持静态,一直存在,尽量不去销毁。而SqlSession其实就类似于jdbc的connection对象,SqlSession对象就能执行数据库的增删改查操作,大家知道每个数据库连接都是非常珍贵的,所以在使用后尽量及时关闭。

为了方便获取SqlSession对象,我写了一个Util类:

?

如果没有学过MyBatis的同学可能会疑问:selectList中传入的参数是什么东西?平常大家都传入的sql语句,这个xx.xx完全看不懂的样子。其实这个"com.mybatisdemo.entity.UserInfo.selectAll_userInfo"就是从前面mapper配置文件中去找对应的sql语句,"com.mybatisdemo.entity.UserInfo"表示配置文件的namespace,"selectAll_userInfo"表示配置文件具体的select标签,update和insert类似。

?

这里只是简单介绍一下MyBatis,我也是初步学习,随后会研究与spring整合以及复杂sql的处理。

最后附上demo源码,希望对大家有所帮助。

1 楼 tracyyr 2012-03-27 讲的很好啊

读书人网 >软件架构设计

热点推荐