ibatis3 简单示例
ibatis3 已经发布了。跟ibatis2还是有一定的区别的。
总的来说,配置更简单了。当然,你还可以到网上找些自动生成的工具。
那样更方便了 , 国内国外都有。推荐一下:http://tomcatmonitor.googlecode.com/files/abator.swf
iBATIS 3 是一个 ORM 持久框架,用来将 Java 对象内的属性映射到数据库内的表列。iBATIS 以映射为中心,重点在于映射一个优秀的对象模型与一个优秀的关系型数据库设计。
iBATIS 3 内的一个新特性是使用 Java 注释进行映射,这就使得映射更为整洁也更为直观,而且可以以 Java源代码的形式为很多项目所用。iBATIS 3 还提供了使用 XML配置文件进行对象映射的功能。这种双重配置方法的存在让您可以为自己的项目选用最为简单的配置 iBATIS 的方式。
iBATIS 3 带来了一些新的变化,允许您利用 Java 5 注释。通过使用注释,您可以创建 mapper 接口来供您在 Java 代码内进行从对象到数据库的全部映射。清单 8 所示的代码展示了这个用于配置(并非 XML 配置)的 AutomobileMapper 接口。
在 Automobile mapper 的 XML 配置中,resultMap 元素用来映射 model_year 数据库列与 Automobile 对象上的 year 字段。这个映射相当简单,可以在注释内进行,只要使用为该列赋别名的 SQL 特性就可以了,这个特性可由在 @Select 注释内定义的 SQL 完成。
AutomobileMapper 接口内的 Select 注释将 selectAutomobile 方法映射到用来根据给定值从 automobiles 表选择一个记录的 SQL。这个值被指定为实参的 id 参数并被作为 #{id}包括在这个 SQL 语句内,正如其在 XML 配置中那样。使用 Java 接口映射这些 SQL 方法的一个极大的好处是 feedbac会以编译时错误的形式出现在 Java 编辑器中。这样一来,我们就可以确认这些方法均能返回正确的类型,而 XML配置通常需要先执行代码才能找到错误。
此外,iBATIS 3 现在还支持接口继承,允许对 Java 接口进行优化以减少代码重复。
iBATIS 文档中有这样的一个提示,即对于较小且较为简单的项目,注释可以更为简单和易读。不过,较 XML 配置而言,注释的功能相对有限。若项目中包含复杂的对象或复杂的数据库结构,请考虑使用 XML 配置,而不是 Java 注释。
先说SQL映射文件 *.xml
数据类当然,基本跟以前差不多:public class UserDaoTest extends BaseDaoTestCase{private UserDao dao;@Autowiredpublic void setUserDao(UserDao dao) {this.dao = dao;}@Overrideprotected String[] getDbUnitDataFiles() {return new String[]{"classpath:common_testdata.xml","classpath:User_testdata.xml"};}@Testpublic void findByPageRequest() {int pageNumber = 1;int pageSize = 10;PageRequest<Map> pageRequest = new PageRequest(new HashMap());pageRequest.setPageNumber(pageNumber);pageRequest.setPageSize(pageSize);pageRequest.setSortColumns(null);pageRequest.getFilters().put("name", "1");pageRequest.getFilters().put("password", "1");pageRequest.getFilters().put("realname", "1");pageRequest.getFilters().put("sex", "1");pageRequest.getFilters().put("company", "1");pageRequest.getFilters().put("worktel", "1");pageRequest.getFilters().put("mobiletel1", "1");pageRequest.getFilters().put("mobiletel2", "1");pageRequest.getFilters().put("fax", "1");pageRequest.getFilters().put("birthday", "1");pageRequest.getFilters().put("email", "1");pageRequest.getFilters().put("address", "1");pageRequest.getFilters().put("postalcode", "1");pageRequest.getFilters().put("idcard", "1");pageRequest.getFilters().put("blocked", "1");pageRequest.getFilters().put("regdate", "1");pageRequest.getFilters().put("lastloginDate", "1");pageRequest.getFilters().put("logincount", "1");Page page = dao.findByPageRequest(pageRequest);assertEquals(pageNumber,page.getThisPageNumber());assertEquals(pageSize,page.getPageSize());List resultList = (List)page.getResult();assertNotNull(resultList);}}
写的比较简单,希望对大家有点用。呵呵。 1 楼 xurichusheng 2011-05-24 木有 BaseIbatis3Dao 这个类。
LZ好像没贴出来吧?