zoukankan      html  css  js  c++  java
  • 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项目源码

  • 相关阅读:
    Ajax_ajax模板引擎 ---tmplate.js处理数据和标签拼接
    Ajax_ajax请求中的跨域问题---浏览器不允许ajax跨域获取服务器数据,那我们就用jsonp来实现跨域
    Ajax_jquery库中Ajax方法的使用
    第一阶段冲刺 second day
    第11周周总结
    用户场景分析
    第一阶段冲刺 first day
    第10周周总结
    第9周周总结
    查找水王
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2375019.html
Copyright © 2011-2022 走看看