iBATIS3.0 增删改查

1034874205 贡献于2012-03-04

作者 微软用户  创建于2011-12-19 08:25:00   修改者微软用户  修改于2012-01-10 09:31:00字数6512

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

 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.    2.    5.    6.        7.        8.            9.        10.        11.            12.                13.                14.                    15.                    16.                    17.                    18.                19.            20.        21.        22.            23.        24.     上面文件中的sql映射文件person.xml代码如下: Xml代码   1.    2.    5.    6.    7.    8.    9.        11.         select * from person where id = #{id}   12.        13.        14.         select * from person   15.        16.        17.         select * from person where name like #{name}   18.        19.        20.         insert into person(name,birthday,sex)   21.         values(#{name},#{birthday},#{sex})   22.        23.        24.         delete from person where id=#{id}   25.        26.        27.         update person set name=#{name},birthday=#{birthday},sex=#{sex}   28.         where id=#{id}   29.        30.         注意:在iBATIS3中,属性parameterMap是不推荐使用的,在以后的版本可能会去掉这个属性。      Person.java的代码如下: Java代码   1. package cn.ibatis3.test;   2.    3. import java.util.Date;   4.    5. public class Person {   6.     private int id = 0;   7.     private String name = "";   8.     private String sex = "male";   9.     private Date birthday = null;   10.    11.     public Person() {   12.    13.     }   14.    15.     //省略getter 和 setter 方法   16.        17.     @Override   18.     public String toString() {   19.         return "id=" + id + "\t" + "name=" + name + "\t" + "sex=" + sex + "\t"   20.                 + "birthday=" + new java.sql.Date(birthday.getTime()).toString();   21.     }   22.    23. }       iBATIS官方推荐我们使用单例模式创建一个sessionFactory,我这里也提供一个sessionFactory.java,呵呵,仅供参考: Java代码   1. package cn.ibatis3.test;   2.    3. import java.io.IOException;   4. import java.io.Reader;   5.    6. import org.apache.ibatis.io.Resources;   7. import org.apache.ibatis.session.SqlSessionFactory;   8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;   9.    10. public final class SessionFactory {   11.     private String resource="cn/ibatis3/test/SqlMapper.xml";   12.     private SqlSessionFactory sqlSessionFactory=null;   13.     private static SessionFactory sessionFactory=new SessionFactory ();   14.        15.     private SessionFactory() {   16.         try {   17.             Reader reader=Resources.getResourceAsReader(resource);   18.             sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);   19.         } catch (IOException e) {   20.             System.out.println("#IOException happened in initialising the SessionFactory:"+e.getMessage());   21.             throw new ExceptionInInitializerError(e);   22.         }   23.     }   24.     public static SessionFactory getInstance() {   25.         return sessionFactory;   26.     }   27.     public SqlSessionFactory getSqlSessionFactory() {   28.         return sqlSessionFactory;   29.     }   30.    31. }         基于接口的编程(还有就是iBATIS3的注解也是在接口方法上的,关于注解以后有机会再讲,它也是iBATIS3的一个新特性),DAO层的接口PersonMapper.java代码如下: Java代码   1. package cn.ibatis3.test;   2.    3. import java.util.List;   4.    5. public interface PersonMapper {   6.     Person selectById(Integer id);   7.     List selectAll();   8.     List selectPersonsByName(String name);   9.     void insert(Person person);   10.     void delete(Person person);   11.     void update(Person person);   12.        13. }    接口的实现类PersonDao.java代码如下: Java代码   1. package cn.ibatis3.test;   2.    3. import java.util.ArrayList;   4. import java.util.List;   5.    6. import org.apache.ibatis.session.SqlSession;   7. import org.apache.ibatis.session.SqlSessionFactory;   8.    9. public class PersonDao implements PersonMapper {   10.     private SqlSessionFactory sessionFactory = SessionFactory.getInstance()   11.             .getSqlSessionFactory();   12.    13.     public Person selectById(Integer id) {   14.         Person person = new Person();   15.         SqlSession session = null;   16.         try {   17.             session = sessionFactory.openSession();   18.             person = (Person) session.selectOne(   19.                     "cn.ibatis3.test.PersonMapper.selectPerson", id);   20.         } finally {   21.             session.close();   22.         }   23.         return person;   24.     }   25.    26.     @SuppressWarnings("unchecked")   27.     public List selectAll() {   28.         List persons = new ArrayList();   29.         SqlSession session = null;   30.         try {   31.             session = sessionFactory.openSession();   32.             persons = session   33.                     .selectList("cn.ibatis3.test.PersonMapper.selectAll");   34.         } finally {   35.             session.close();   36.         }   37.    38.         return persons;   39.     }   40.    41.     public void delete(Person person) {   42.         SqlSession session = null;   43.         try {   44.             session = sessionFactory.openSession();   45.             session.delete("cn.ibatis3.test.PersonMapper.deletePerson", person);   46.             session.commit();   47.         } finally {   48.             session.close();   49.         }   50.    51.     }   52.    53.     public void insert(Person person) {   54.         SqlSession session = null;   55.         try {   56.             session = sessionFactory.openSession();   57.             session.insert("cn.ibatis3.test.PersonMapper.insertPerson", person);   58.             session.commit();   59.         } finally {   60.             session.close();   61.         }   62.    63.     }   64.    65.     public void update(Person person) {   66.         SqlSession session = null;   67.         try {   68.             session = sessionFactory.openSession();   69.             session.insert("cn.ibatis3.test.PersonMapper.updatePerson", person);   70.             session.commit();   71.         } finally {   72.             session.close();   73.         }   74.    75.     }   76.    77.     @SuppressWarnings("unchecked")   78.     public List selectPersonsByName(String name) {   79.         List persons = new ArrayList();   80.         SqlSession session = null;   81.         try {   82.             session = sessionFactory.openSession();   83.             System.out.println(name);   84.             persons = session.selectList(   85.                     "cn.ibatis3.test.PersonMapper.selectPersonsByName", "%"   86.                             + name + "%");   87.             session.commit();   88.         } finally {   89.             session.close();   90.         }   91.    92.         return persons;   93.     }   94.    95. }    最后是表的创建: Sql代码   1. DROP TABLE IF EXISTS `test`.`person`;   2. CREATE TABLE  `test`.`person` (   3.   `id` int(10) unsigned NOT NULL auto_increment,   4.   `name` varchar(20) default NULL,   5.   `sex` varchar(8) default NULL,   6.   `birthday` datetime default NULL,   7.   PRIMARY KEY  (`id`)   8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;       好了,做为一次新技术的体验吧,欢迎大家指出其中的错误或者是不恰当的地方。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 7 人已下载

下载文档