好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

IBatis初次运用

IBatis初次运用

刚进入第一家软件公司,因为公司使用struts2,spring,ibatis这三个框架,对IBatis没有接触过,故写了一些小的程序练手。

  IBatis是把实体类和sql语句之间建立了映射关系,这种策略可以允许开发人员自己来写合适的sql语句。也就是说IBatis还是需要自己动手写SQL语句,在DAO类就不用去写实现的方式。

  软件开发环境

  开发工具:MyEclipse 6.5,jdk1.6.0_24;

  数据库  :MySql5.5    (公司:oracle10g);

  JAR包  :ibatis-2.3.0.677.jar, mysql-connector-java-5.1.15-bin.jar;

  参考资料:ibatis学习(一)ibatis介绍以及用例        http://www.blogjava.net/freeman1984/archive/2007/12/07/166116.html

 学习实例:创建一个 天体 ( Astronomical object )以太空间坐标系的例子。

 (一) 建立一个java(web)  project 项目(建立好包名及类名),导入jar包。

(二)建立数据库,编写实体类。

//天体的实体类
public class AObject {

private String id; //天体的唯一标示ID
private String name; //天体的名称
private String type; //天体的类型

//天体的 以太空间坐标系 x,y,z
private float x; //x坐标
private float y; //y坐标
private float z; //z坐标

//set, get 方法

复制代码

 create   database  db_aobject;
use db_aobject;
create table tb_aobject(id varchar ( 50 ) primary key ,
name varchar ( 50 ),
type varchar ( 50 ),
x float ,
y float ,
z float
);

复制代码

(三)提供ibatis的配置文件(myibatis_config.xml)

 <?  xml version="1.0" encoding="UTF-8"   ?> 
<! DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd" >

< sqlMapConfig >

<!-- 数据源配置 starts -->
< transactionManager type ="JDBC" commitRequired ="false" >
< dataSource type ="SIMPLE" >
< property name ="JDBC.Driver" value ="com.mysql.jdbc.Driver" />
< property name ="JDBC.ConnectionURL" value ="jdbc:mysql://127.0.0.1/db_aobject" />
< property name ="JDBC.Username" value ="root" />
< property name ="JDBC.Password" value ="123" />
</ dataSource >
</ transactionManager >
<!-- 数据源配置 end -->


<!-- 导入实体sql配置 starts -->
< sqlMap resource ="com/iokays/aobject/mapper/AObjectMapper.xml" />
<!-- 导入实体sql配置 end -->

</ sqlMapConfig >

复制代码

(四)完成实体类(AObject)的sqlMapper映射配置(AObjectMapper.xml)。

 <?  xml version="1.0" encoding="UTF-8"   ?> 
<! DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" >

<!-- sqlMap的命名空间 -->
< sqlMap namespace = "AObject" >
<!-- 设计 引用的实体类(com.iokays.aobject.pojo.AObject) 的别名(AObject) -->
< typeAlias alias = "AObject" type = "www.iokays.aobject.pojo.AObject" />

<!-- 查询所有的的天体, 返回的集合属性类别为 AObject -->
< select id ="selectAllAObject" resultClass = "AObject" >
select * from tb_aobject
</ select >

<!-- 根据id查询天体,返回的集合属性为AObject, 传入的参数类型为String -->
< select id = "selectAObject" resultClass = "AObject" parameterClass ="String" >
select * from tb_aobject where id = #id#
</ select >

<!-- 向数据库插入一条记录 传入的参数类型:AObject -->
< insert id ="insertAObject" parameterClass ="AObject" >
insert into tb_aobject values(#id#, #name#, #type#, #x#, #y#, #z#)
</ insert >

<!-- 向表单删除一条记录 传入的参数类型:int -->
< delete id ="deleteAObject" parameterClass ="String" >
delete from tb_aobject where id = #id#
</ delete >

<!-- 更新表单的一条记录 传入的参数类型: AObject -->
< update id ="updateAObject" parameterClass = "AObject" >
update tb_aobject set name = #name#, type = #type#, x = #x#, y = #y#, z = #z# where id = #id#
</ update >

</ sqlMap >

复制代码

(五)编写DAO类,关联myibatis_config.xml配置文件,形成映射关系。

 public   class  AObjectDao {
// 构造函数 获取myibatis_config.xml的配置信息到 sqlMapper 对象
public AObjectDao() throws IOException {
// 读取myibatis_config.xml的配置文件
Reader reader = Resources.getResourceAsReader("myibatis_config.xml");
// 加载到sqlMapClient对象
this .sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
// 关闭文件流
reader.close();
}
public List selectAllAObject() throws Exception {

// 调用myibaits_confing.xml id:selectAllAObject 的sql配置语句。
return this .sqlMapper.queryForList("selectAllAObject");
}
public AObject selectAObject(String id) throws Exception {
// 调用myibaits_confing.xml id:selectAObject 的sql配置语句。
return (AObject) this .sqlMapper.queryForObject("selectAObject", id);
}
public void insertAObject(AObject aObject) throws Exception {
// 调用myibaits_confing.xml id:insertAObject 的sql配置语句。
this .sqlMapper.insert("insertAObject", aObject);
}
public void deleteAObject(String id) throws Exception {
// 调用myibaits_confing.xml id:deleteAObject 的sql配置语句。
this .sqlMapper.delete("deleteAObject", id);
}
public void updateAObject(AObject aObject) throws Exception {
// 调用myibaits_confing.xml id:updateAObject 的sql配置语句。
this .sqlMapper.update("updateAObject", aObject);
}

// 私有的 SqlMapClient 类 iBatis驱动
private SqlMapClient sqlMapper;
}

复制代码

最后编写测试类

 public   class  Test {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// 建立 访问数据对象接口
AObjectDao dao = new AObjectDao();

// 添加一条记录
AObject aObject = new AObject();
aObject.setId("M34-4602151-B");

aObject.setName("Earth"); // 地球,没有设置中英文的问题。
aObject.setType("Planet"); // 行星, 没有设置中英文的问题。

aObject.setX(12345); // 以太坐标系x
aObject.setY(12346);
aObject.setZ(12347);

// 执行添加操作
dao.insertAObject(aObject);

// 执行查询操作
AObject _aObject = dao.selectAObject("M34-4602151-B");

// 修改id:M34-4602151-B 的以太坐标系
aObject.setX(1);
aObject.setY(1);
aObject.setZ(1);
// 执行修改操作
dao.updateAObject(aObject);

// 执行删除操作
dao.deleteAObject("M34-4602151-B");

}
}

复制代码

运行及调试

错误调试:

(1): Error parsing XML.  Cause: org.xml.sax.SAXParseException: Attribute "type" is required and must be specified for element type "typeAlias".

查看AObjectMapper.xml 文件  <typeAlias alias = "AObject" type = "www.iokays.aobject.pojo.AObject"/>

AstronomicalObject项目源码

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于IBatis初次运用的详细内容...

  阅读:45次