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文件是映射文件要使用的,其内容如下:
- driver=com.mysql.jdbc.Driver
-
url=jdbc\:mysql\://localhost\:3306/test
- username=root
-
password=123456
SqlMapper.xml是iBATIS的配置文件,其代码如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEconfiguration
- PUBLIC"-//ibatis.apache.org//DTDConfig3.0//EN"
-
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
-
<configuration>
-
<propertiesresource="jdbc.properties"/>
-
<typeAliases>
-
<typeAliastype="cn.ibatis3.test.Person"alias="Person"/>
-
</typeAliases>
-
<environmentsdefault="development">
-
<environmentid="development">
-
<transactionManagertype="JDBC"/>
-
<dataSourcetype="POOLED">
-
<propertyname="driver"value="${driver}"/>
-
<propertyname="url"value="${url}"/>
-
<propertyname="username"value="${username}"/>
-
<propertyname="password"value="${password}"/>
-
</dataSource>
-
</environment>
-
</environments>
-
<mappers>
-
<mapperresource="cn/ibatis3/test/person.xml"/>
-
</mappers>
-
</configuration>
上面文件中的sql映射文件person.xml代码如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEmapper
- PUBLIC"-//ibatis.apache.org//DTDMapper3.0//EN"
-
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
-
-
<mappernamespace="cn.ibatis3.test.PersonMapper">
-
<selectid="selectPerson"parameterType="java.lang.Integer"
-
resultType="Person">
-
select*frompersonwhereid=#{id}
-
</select>
-
<selectid="selectAll"resultType="Person">
- select*fromperson
-
</select>
-
<selectid="selectPersonsByName"resultType="Person"parameterType="String">
- select*frompersonwherenamelike#{name}
-
</select>
-
<insertid="insertPerson"parameterType="Person">
- insertintoperson(name,birthday,sex)
- values(#{name},#{birthday},#{sex})
-
</insert>
-
<deleteid="deletePerson"parameterType="Person">
-
deletefrompersonwhereid=#{id}
-
</delete>
-
<updateid="updatePerson"parameterType="Person">
-
updatepersonsetname=#{name},birthday=#{birthday},sex=#{sex}
-
whereid=#{id}
-
</update>
-
</mapper>
注意:在iBATIS3中,属性parameterMap是不推荐使用的,在以后的版本可能会去掉这个属性。
Person.java的代码如下:
- packagecn.ibatis3.test;
-
importjava.util.Date;
-
publicclassPerson{
-
privateintid=0;
-
privateStringname="";
-
privateStringsex="male";
-
privateDatebirthday=null;
-
publicPerson(){
- }
-
-
-
@Override
-
publicStringtoString(){
-
return"id="+id+"\t"+"name="+name+"\t"+"sex="+sex+"\t"
-
+"birthday="+newjava.sql.Date(birthday.getTime()).toString();
- }
- }
iBATIS官方推荐我们使用单例模式创建一个sessionFactory,我这里也提供一个sessionFactory.java,呵呵,仅供参考:
- packagecn.ibatis3.test;
-
importjava.io.IOException;
-
importjava.io.Reader;
-
importorg.apache.ibatis.io.Resources;
-
importorg.apache.ibatis.session.SqlSessionFactory;
-
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
-
publicfinalclassSessionFactory{
-
privateStringresource="cn/ibatis3/test/SqlMapper.xml";
-
privateSqlSessionFactorysqlSessionFactory=null;
-
privatestaticSessionFactorysessionFactory=newSessionFactory();
-
-
privateSessionFactory(){
-
try{
- Readerreader=Resources.getResourceAsReader(resource);
-
sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);
-
}catch(IOExceptione){
-
System.out.println("#IOExceptionhappenedininitialisingtheSessionFactory:"+e.getMessage());
-
thrownewExceptionInInitializerError(e);
- }
- }
-
publicstaticSessionFactorygetInstance(){
-
returnsessionFactory;
- }
-
publicSqlSessionFactorygetSqlSessionFactory(){
-
returnsqlSessionFactory;
- }
- }
基于接口的编程(还有就是iBATIS3的注解也是在接口方法上的,关于注解以后有机会再讲,它也是iBATIS3的一个新特性),DAO层的接口PersonMapper.java代码如下:
- packagecn.ibatis3.test;
-
importjava.util.List;
-
publicinterfacePersonMapper{
- PersonselectById(Integerid);
- List<Person>selectAll();
- List<Person>selectPersonsByName(Stringname);
-
voidinsert(Personperson);
-
voiddelete(Personperson);
-
voidupdate(Personperson);
-
- }
接口的实现类PersonDao.java代码如下:
- packagecn.ibatis3.test;
-
importjava.util.ArrayList;
-
importjava.util.List;
-
importorg.apache.ibatis.session.SqlSession;
-
importorg.apache.ibatis.session.SqlSessionFactory;
-
publicclassPersonDaoimplementsPersonMapper{
-
privateSqlSessionFactorysessionFactory=SessionFactory.getInstance()
- .getSqlSessionFactory();
-
publicPersonselectById(Integerid){
-
Personperson=newPerson();
-
SqlSessionsession=null;
-
try{
- session=sessionFactory.openSession();
- person=(Person)session.selectOne(
-
"cn.ibatis3.test.PersonMapper.selectPerson",id);
-
}finally{
- session.close();
- }
-
returnperson;
- }
-
@SuppressWarnings("unchecked")
-
publicList<Person>selectAll(){
-
List<Person>persons=newArrayList<Person>();
-
SqlSessionsession=null;
-
try{
- session=sessionFactory.openSession();
- persons=session
-
.selectList("cn.ibatis3.test.PersonMapper.selectAll");
-
}finally{
- session.close();
- }
-
returnpersons;
- }
-
publicvoiddelete(Personperson){
-
SqlSessionsession=null;
-
try{
- session=sessionFactory.openSession();
-
session.delete("cn.ibatis3.test.PersonMapper.deletePerson",person);
- session.commit();
-
}finally{
- session.close();
- }
- }
-
publicvoidinsert(Personperson){
-
SqlSessionsession=null;
-
try{
- session=sessionFactory.openSession();
-
session.insert("cn.ibatis3.test.PersonMapper.insertPerson",person);
- session.commit();
-
}finally{
- session.close();
- }
- }
-
publicvoidupdate(Personperson){
-
SqlSessionsession=null;
-
try{
- session=sessionFactory.openSession();
-
session.insert("cn.ibatis3.test.PersonMapper.updatePerson",person);
- session.commit();
-
}finally{
- session.close();
- }
- }
-
@SuppressWarnings("unchecked")
-
publicList<Person>selectPersonsByName(Stringname){
-
List<Person>persons=newArrayList<Person>();
-
SqlSessionsession=null;
-
try{
- session=sessionFactory.openSession();
- System.out.println(name);
- persons=session.selectList(
-
"cn.ibatis3.test.PersonMapper.selectPersonsByName","%"
-
+name+"%");
- session.commit();
-
}finally{
- session.close();
- }
-
returnpersons;
- }
- }
最后是表的创建:
- DROPTABLEIFEXISTS`test`.`person`;
-
CREATETABLE`test`.`person`(
-
`id`int(10)unsignedNOTNULLauto_increment,
-
`name`varchar(20)defaultNULL,
-
`sex`varchar(8)defaultNULL,
-
`birthday`datetimedefaultNULL,
-
PRIMARYKEY(`id`)
-
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
分享到:
相关推荐
Ibatis3.0 增删改查(三) Ibatis3.0 增删改查(三),包含jar包和建表语句。sql建表语句在WEBROOT下面
Ibatis3.0 增删改查(二) Ibatis3.0 mybatis 增删改查(二),包含jar包和建表语句。sql语句在log文件夹下面
Ibatis和Spring整合例子,实现增删改查功能.
Ibatis3.0 mybatis 增删改查(一),包含jar包和建表语句。
SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 项目访问路径 localhost:8888/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...
这是我第一个完整的ssi程序,详细的说明,完整的代码类,一目了然,是初学者的好老师,工程使用myeclipse8.5 mysql5.1,导入工程和数据库可以直接运行。
SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence ...项目访问路径 localhost:8080/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...
第07课 mybatis 增删改查 第08课 mybatis 动态sql 第09课 bootstrap的搭建+栅格系统+table 第10课 bootstrap 表单 (二)会议管理系统之设计部分 第11课 原型设计_设备管理 第12课 原型设计_会议室管理+预约会议室 ...
3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 ...