ibatis简单实现与配置
ibatis简单实现与配置
发布时间:2016-12-29 来源:查字典编辑
摘要:那我们什么时候可以用到ibatis呢,我们用hibernate的时候会发现,有的时候hibernate不支持一些特别精确的查询,这个时候我们...

那我们什么时候可以用到ibatis呢,我们用hibernate的时候会发现,有的时候hibernate不支持一些特别精确的查询,这个时候我们完全可以用到ibatis,因为他是半自动化的。一会我们可以看到,他的查询语句是我们在配置文件xml中写的。hibernate可以用到一些大型的项目当中,ibatis我们可以应用到一些小型的项目当中。

下面我们看下ibatis的具体实现,hibernate中,我们都知道有一个hibernate.cfg.xml配置文件,和另一个*.hbm.xml配置文件,在ibatis中,我们同样也有两个配置文件,一个为SqlMapConfig.xml另一个为*.xml下面我们具体的看下两个配置文件中的具体配置方法。

SqlMapConfig.xml配置方法

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig

PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"

"http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

<settings cacheModelsEnabled="true"

enhancementEnabled="true"

lazyLoadingEnabled="true"

errorTracingEnabled="true"

maxRequests="32"

maxSessions="10"

maxTransactions="5"

useStatementNamespaces="false" />

<>

<transactionManager type="JDBC">

<dataSource type="SIMPLE">

<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>

<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/sample"/>

<property name="JDBC.Username" value="root"/>

<property name="JDBC.Password" value="admin"/>

<>

<property name="Pool.MaximumIdleConnections" value="5" />

<property name="Pool.MaximumCheckoutTime" value="120000" />

<property name="Pool.TimeToWait" value="500" />

<property name="Pool.PingQuery" value="select 1 from sample" />

<property name="Pool.PingEnabled" value="false" />

<property name="Pool.PingConnectionsOlderThan" value="1" />

<property name="Pool.PingConnectionsNotUsedFor" value="1" />

<>

</dataSource>

</transactionManager>

<sqlMap resource="com/kobe/map/User.xml" />

<>

</sqlMapConfig>

<>

里面的配置文件,对我们初级入门的人来说,主要的配置就是连接数据库的配置。

下面,我们在看下*.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="User"> <>

<typeAlias alias="user" type="com.kobe.map.User"/> <>

<>

<select id="getUser" parameterClass="java.lang.String"

resultClass="user">

<>

<![CDATA[ select name,sex from t_user where name = #name#]]>

</select>

<select id="getAllUser" resultClass="user">

<![CDATA[ select name, sex from t_user where name = #name# ]]>

</select>

<update id="updateUser" parameterClass="user">

<![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]>

</update>

<delete id="deleteUser" parameterClass="user">

delete from t_user where id=#id#

</delete>

<insert id="insertUser" parameterClass="user">

<![CDATA[ insert into t_user (id,name,sex) values (#id#,#name#,#sex#) ]]>

</insert>

</sqlMap>

这里面配置文件我们可以看出来了。这里体现了ibatis半自动化的体现,因为他的sql语句并不是自动生成,而是我们自己写的,所以这样我们可以执行更精确的查询。

下面我们在看下Test实现

import java.sql.SQLException;

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class Test {

public static void main(String args[]){

//首先初始化iBatis获得一个SqlMapClient对象

String resource = "com/kobe/map/SqlMapConfig.xml";

com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;

try {

java.io.Reader reader = com.ibatis.common.resources.Resources

.getResourceAsReader(resource);

sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

} catch (Exception e) {

e.printStackTrace();

}

// sqlMap系统初始化完毕,开始执行update操作

try {

sqlMap.startTransaction();

User user = new User();

//user.setId(24);

//user.setName("lzq");

//user.setSex(24);

//sqlMap.insert("insertUser", user);

//user.setId(24);

//user.setName("kobelzq");

//user.setSex(24);

//sqlMap.update("updateUser", user); //key为User xml中配置的id名字 键为bean的名字

user.setId(2);

sqlMap.delete("deleteUser", user);

sqlMap.commitTransaction();

} catch (SQLException e) {

System.out.println(e.getMessage());

} finally {

try {

sqlMap.endTransaction();

} catch (SQLException e) {

e.printStackTrace();

}

System.out.println("操作成功");

}

}

}

上面我加注释的地方,大家可以根据不同的需要,测试下不同的效果,我测试了三个效果,分别为增,删,改,查询大家要是感兴趣的话,可以自己写下。我这里少写了一个持久类,持久类的写法大家都熟悉,我就不在这里给大家展示了,无非就是get与set方法,大家可以自己实现一下。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新其他综合学习
热门其他综合学习
编程开发子分类