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 讲的很好啊