`
追梦java
  • 浏览: 36924 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

使用iBATIS3.0完成增删改查

 
阅读更多

iBATIS3.0和以前的版本有一些改变,不过学过以前版本的再学习3.0应该不是太难,3.0要求JDK1.5支持,因为其中增加了注解和泛型,这些都是JDK1.5才有的。好了废话不多说,先来利用iBATIS3做下简单的增删改查吧。

首先到Apache(http://www.apache.org/)网站下载iBATIS3的jar 包,我下载的是ibatis-3-core-3.0.0.227.zip,解压后吧那个jar文件(ibatis-3-core-3.0.0.227.jar)添加到工程就可以了,还有一个文件(ibatis-3-core-src-3.0.0.227.zip)是源代码,可以用来查看源代码的,使用eclipse可以用它来关联源代码。

在MyEclipse新建一个Java Project,结构如下图

jdbc.properties文件是映射文件要使用的,其内容如下:

Properties代码 复制代码收藏代码
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc\:mysql\://localhost\:3306/test
  3. username=root
  4. password=123456

SqlMapper.xml是iBATIS的配置文件,其代码如下:

Xml代码 复制代码收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEconfiguration
  3. PUBLIC"-//ibatis.apache.org//DTDConfig3.0//EN"
  4. "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
  5. <configuration>
  6. <propertiesresource="jdbc.properties"/>
  7. <typeAliases>
  8. <typeAliastype="cn.ibatis3.test.Person"alias="Person"/>
  9. </typeAliases>
  10. <environmentsdefault="development">
  11. <environmentid="development">
  12. <transactionManagertype="JDBC"/>
  13. <dataSourcetype="POOLED">
  14. <propertyname="driver"value="${driver}"/>
  15. <propertyname="url"value="${url}"/>
  16. <propertyname="username"value="${username}"/>
  17. <propertyname="password"value="${password}"/>
  18. </dataSource>
  19. </environment>
  20. </environments>
  21. <mappers>
  22. <mapperresource="cn/ibatis3/test/person.xml"/>
  23. </mappers>
  24. </configuration>

上面文件中的sql映射文件person.xml代码如下:

Xml代码 复制代码收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEmapper
  3. PUBLIC"-//ibatis.apache.org//DTDMapper3.0//EN"
  4. "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
  5. <!---->
  6. <mappernamespace="cn.ibatis3.test.PersonMapper">
  7. <selectid="selectPerson"parameterType="java.lang.Integer"
  8. resultType="Person">
  9. select*frompersonwhereid=#{id}
  10. </select>
  11. <selectid="selectAll"resultType="Person">
  12. select*fromperson
  13. </select>
  14. <selectid="selectPersonsByName"resultType="Person"parameterType="String">
  15. select*frompersonwherenamelike#{name}
  16. </select>
  17. <insertid="insertPerson"parameterType="Person">
  18. insertintoperson(name,birthday,sex)
  19. values(#{name},#{birthday},#{sex})
  20. </insert>
  21. <deleteid="deletePerson"parameterType="Person">
  22. deletefrompersonwhereid=#{id}
  23. </delete>
  24. <updateid="updatePerson"parameterType="Person">
  25. updatepersonsetname=#{name},birthday=#{birthday},sex=#{sex}
  26. whereid=#{id}
  27. </update>
  28. </mapper>

注意:在iBATIS3中,属性parameterMap是不推荐使用的,在以后的版本可能会去掉这个属性。

Person.java的代码如下:

Java代码 复制代码收藏代码
  1. packagecn.ibatis3.test;
  2. importjava.util.Date;
  3. publicclassPerson{
  4. privateintid=0;
  5. privateStringname="";
  6. privateStringsex="male";
  7. privateDatebirthday=null;
  8. publicPerson(){
  9. }
  10. //省略getter和setter方法
  11. @Override
  12. publicStringtoString(){
  13. return"id="+id+"\t"+"name="+name+"\t"+"sex="+sex+"\t"
  14. +"birthday="+newjava.sql.Date(birthday.getTime()).toString();
  15. }
  16. }

iBATIS官方推荐我们使用单例模式创建一个sessionFactory,我这里也提供一个sessionFactory.java,呵呵,仅供参考:

Java代码 复制代码收藏代码
  1. packagecn.ibatis3.test;
  2. importjava.io.IOException;
  3. importjava.io.Reader;
  4. importorg.apache.ibatis.io.Resources;
  5. importorg.apache.ibatis.session.SqlSessionFactory;
  6. importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. publicfinalclassSessionFactory{
  8. privateStringresource="cn/ibatis3/test/SqlMapper.xml";
  9. privateSqlSessionFactorysqlSessionFactory=null;
  10. privatestaticSessionFactorysessionFactory=newSessionFactory();
  11. privateSessionFactory(){
  12. try{
  13. Readerreader=Resources.getResourceAsReader(resource);
  14. sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);
  15. }catch(IOExceptione){
  16. System.out.println("#IOExceptionhappenedininitialisingtheSessionFactory:"+e.getMessage());
  17. thrownewExceptionInInitializerError(e);
  18. }
  19. }
  20. publicstaticSessionFactorygetInstance(){
  21. returnsessionFactory;
  22. }
  23. publicSqlSessionFactorygetSqlSessionFactory(){
  24. returnsqlSessionFactory;
  25. }
  26. }

基于接口的编程(还有就是iBATIS3的注解也是在接口方法上的,关于注解以后有机会再讲,它也是iBATIS3的一个新特性),DAO层的接口PersonMapper.java代码如下:

Java代码 复制代码收藏代码
  1. packagecn.ibatis3.test;
  2. importjava.util.List;
  3. publicinterfacePersonMapper{
  4. PersonselectById(Integerid);
  5. List<Person>selectAll();
  6. List<Person>selectPersonsByName(Stringname);
  7. voidinsert(Personperson);
  8. voiddelete(Personperson);
  9. voidupdate(Personperson);
  10. }

接口的实现类PersonDao.java代码如下:

Java代码 复制代码收藏代码
  1. packagecn.ibatis3.test;
  2. importjava.util.ArrayList;
  3. importjava.util.List;
  4. importorg.apache.ibatis.session.SqlSession;
  5. importorg.apache.ibatis.session.SqlSessionFactory;
  6. publicclassPersonDaoimplementsPersonMapper{
  7. privateSqlSessionFactorysessionFactory=SessionFactory.getInstance()
  8. .getSqlSessionFactory();
  9. publicPersonselectById(Integerid){
  10. Personperson=newPerson();
  11. SqlSessionsession=null;
  12. try{
  13. session=sessionFactory.openSession();
  14. person=(Person)session.selectOne(
  15. "cn.ibatis3.test.PersonMapper.selectPerson",id);
  16. }finally{
  17. session.close();
  18. }
  19. returnperson;
  20. }
  21. @SuppressWarnings("unchecked")
  22. publicList<Person>selectAll(){
  23. List<Person>persons=newArrayList<Person>();
  24. SqlSessionsession=null;
  25. try{
  26. session=sessionFactory.openSession();
  27. persons=session
  28. .selectList("cn.ibatis3.test.PersonMapper.selectAll");
  29. }finally{
  30. session.close();
  31. }
  32. returnpersons;
  33. }
  34. publicvoiddelete(Personperson){
  35. SqlSessionsession=null;
  36. try{
  37. session=sessionFactory.openSession();
  38. session.delete("cn.ibatis3.test.PersonMapper.deletePerson",person);
  39. session.commit();
  40. }finally{
  41. session.close();
  42. }
  43. }
  44. publicvoidinsert(Personperson){
  45. SqlSessionsession=null;
  46. try{
  47. session=sessionFactory.openSession();
  48. session.insert("cn.ibatis3.test.PersonMapper.insertPerson",person);
  49. session.commit();
  50. }finally{
  51. session.close();
  52. }
  53. }
  54. publicvoidupdate(Personperson){
  55. SqlSessionsession=null;
  56. try{
  57. session=sessionFactory.openSession();
  58. session.insert("cn.ibatis3.test.PersonMapper.updatePerson",person);
  59. session.commit();
  60. }finally{
  61. session.close();
  62. }
  63. }
  64. @SuppressWarnings("unchecked")
  65. publicList<Person>selectPersonsByName(Stringname){
  66. List<Person>persons=newArrayList<Person>();
  67. SqlSessionsession=null;
  68. try{
  69. session=sessionFactory.openSession();
  70. System.out.println(name);
  71. persons=session.selectList(
  72. "cn.ibatis3.test.PersonMapper.selectPersonsByName","%"
  73. +name+"%");
  74. session.commit();
  75. }finally{
  76. session.close();
  77. }
  78. returnpersons;
  79. }
  80. }

最后是表的创建:

Sql代码 复制代码收藏代码
  1. DROPTABLEIFEXISTS`test`.`person`;
  2. CREATETABLE`test`.`person`(
  3. `id`int(10)unsignedNOTNULLauto_increment,
  4. `name`varchar(20)defaultNULL,
  5. `sex`varchar(8)defaultNULL,
  6. `birthday`datetimedefaultNULL,
  7. PRIMARYKEY(`id`)
  8. )ENGINE=InnoDBDEFAULTCHARSET=utf8;

分享到:
评论

相关推荐

    Ibatis3.0 增删改查(三)

    Ibatis3.0 增删改查(三) Ibatis3.0 增删改查(三),包含jar包和建表语句。sql建表语句在WEBROOT下面

    Ibatis3.0 增删改查(二)

    Ibatis3.0 增删改查(二) Ibatis3.0 mybatis 增删改查(二),包含jar包和建表语句。sql语句在log文件夹下面

    Ibatis和Spring整合例子,实现增删改查功能

    Ibatis和Spring整合例子,实现增删改查功能.

    Ibatis 增删改查(一)

    Ibatis3.0 mybatis 增删改查(一),包含jar包和建表语句。

    SSI框架整合(Oracle数据库增删改查示例)

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 项目访问路径 localhost:8888/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...

    SSI框架练习增删改查

    这是我第一个完整的ssi程序,详细的说明,完整的代码类,一目了然,是初学者的好老师,工程使用myeclipse8.5 mysql5.1,导入工程和数据库可以直接运行。

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3)

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence ...项目访问路径 localhost:8080/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...

    基于Servlet3.0+IBatis+BootStrip技术构建简单会议管理系统

    第07课 mybatis 增删改查 第08课 mybatis 动态sql 第09课 bootstrap的搭建+栅格系统+table 第10课 bootstrap 表单 (二)会议管理系统之设计部分 第11课 原型设计_设备管理 第12课 原型设计_会议室管理+预约会议室 ...

    springmybatis

    3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 ...

Global site tag (gtag.js) - Google Analytics