ibatis相关知识总结

ibatis相关知识总结

概念

一个基于SQL映射支持Java和·NET的持久层框架。ibatis 是一种“半自动化”的ORM实现。

ORM是指对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

而ibatis的半自动化,指的是ibatis不会自动生成相应的sql代码,需要由程序猿自己编写,然后通过配置映射文件,将sql所需参数和返回结果映射到指定的POJO中。相比较于ibatis,hibernate就是一种全自动化的一种ORM实现,自动生成sql代码语句,并实现POJO和数据库表之间的映射。

具体实现

所需的相关jar包

只需一个ibatis的jar文件,导入到工程即可。另外还需要连接数据库相关的JDBC连接包。

配置文件

主要有总配置文件,SqlMapConfig.xml,JDBC连接属性文件和实体映射文件sqlmap-test.xml
配置文件详解

sqlmap-test.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="tmsnew.song.test">
    <select id="getAllUsers" resultClass="java.util.HashMap">
    select usernum as "usernum",
           devicenum as "devicenum",
           city as "city",
           type as "type"
    from baron
    </select>
    <delete id="deleteUser" parameterClass="com.bonc.tms.web.tmsnew.dss.bo.tmsnew.song.TestBO">
    delete 
    from baron b
    where b.usernum= '$usernum$'
    </delete>
    <select id="selectUser" resultClass="java.util.HashMap" parameterClass="com.bonc.tms.web.tmsnew.dss.bo.tmsnew.song.TestBO">
    select b.usernum as "usernum",
           b.devicenum as "devicenum",
           b.city as "city",
           b.type as "type"
    from baron b
    where b.city = '$city$'
          and b.type = '$type$'
          <isNotEmpty property="devicenum">
                 and b.devicenum = '$devicenum$'
           </isNotEmpty>
           <isNotEmpty property="usernum">
                 and b.usernum = '$usernum$'
           </isNotEmpty>

    </select>
    <update id="updateUser" parameterClass="com.bonc.tms.web.tmsnew.dss.bo.tmsnew.song.TestBO">
    update baron b
    set b.devicenum = '$devicenum$',
        b.city = '$city$',
        b.type = '$type$'
    where b.usernum = '$usernum$'
    </update>
    <insert id="addUser" parameterClass="com.bonc.tms.web.tmsnew.dss.bo.tmsnew.song.TestBO">
    insert into baron b(b.usernum,b.devicenum,b.city,b.type)
    values('$usernum$','$devicenum$','$city$','$type$')
    </insert>
</sqlMap>

test.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=mysql

SqlMapConfig.xml

<?xmlversion="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>
<propertiesresource="test.properties"/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<propertyname="JDBC.Driver"value="${driver}"/>
<propertyname="JDBC.ConnectionURL"value="${url}"/>
<propertyname="JDBC.Username"value="${username}"/>
<propertyname="JDBC.Password"value="${password}"/>
</dataSource>
</transactionManager>
<sqlMapresource="sqlmap-test.xml"/>
</sqlMapConfig>

配置文件完成后,还需要在java文件中导入配置信息,具体实现如下所示:

static {
try {
Reader reader = Resources
.getResourceAsReader("SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}

具体的数据库操作主要通过SqlMapClient类来实现,而实例化一个sqlMapClient对象可以用SqlMapClientBuilder的buildSqlMapClient静态方法来实现

例:sqlMapClient.select(“sql语句路径”,传入参数类或数据类型)

posted on 2016-07-08 10:31  baron_songjin  阅读(148)  评论(0)    收藏  举报

导航