专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » ibatis:ibatis学习笔记整理 »正文

ibatis:ibatis学习笔记整理

来源: 发布时间:星期三, 2008年9月10日 浏览:722次 评论:0
1. 目前的框架,不论是ORM的还是其它大都利用xml来解耦合。更加符合OO的思想,ibatis也不例外。其运行流程如下:

DAO(其它主体如jsp或service)-------读取------>ibatis的config.xml(文件内包括 javabean和属性文件的映射)-----解析----à通过文件与bean的映射来解析对应关系

读取一般利用java.io.Reader.片段如下:

Reader reader = Resources.getResourceAsReader(“config.xml”);

送给ibatis解析config.xml

SqllMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);

如果config.xml和属性映射文件正确的话就ok了,可以利用Dao来访问了。Config.xml 和属性文件如下:

<!-- config.xml -->

view plaincopy to clipboardprint?
<?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="net.sourceforge.jtds.jdbc.Driver" />

<property name="JDBC.ConnectionURL"

value="jdbc:jtds:sqlserver://localhost:1433/ibatis" />

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

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

</dataSource>

</transactionManager>

<sqlMap resource="com/luyu/ibatis/User.xml" />

</sqlMapConfig>

<?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="net.sourceforge.jtds.jdbc.Driver" />

<property name="JDBC.ConnectionURL"

value="jdbc:jtds:sqlserver://localhost:1433/ibatis" />

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

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

</dataSource>

</transactionManager>

<sqlMap resource="com/luyu/ibatis/User.xml" />

</sqlMapConfig>view plaincopy to clipboardprint?
<!-- 属性文件.xml -->

<!-- 属性文件.xml --> view plaincopy to clipboardprint?
<PRE class=csharp name="code"><?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.luyu.ibatis.bean.User" />

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

resultClass="user">

<![CDATA[

select

name,

sex

from t_user

where name = #name#

]]>

</select>

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

<![CDATA[

select

name,

sex

from t_user

]]>

</select>

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

<![CDATA[

UPDATE t_user

SET

name=#name#,

sex=#sex#

WHERE id = #id#

]]>

</update>

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

INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# )

</insert>

<delete id="deleteUser" parameterClass="java.lang.String">

delete from t_user where id = #value#

</delete>

</sqlMap></PRE>
<PRE class=csharp name="code"> </PRE>
<PRE class=csharp name="code"> Dao中的第一个让问如下: </PRE>
<PRE class=csharp name="code"> public static List<User> selectAllAccounts () throws SQLException { </PRE>
<PRE class=csharp name="code"> return sqlMapper.queryForList("findAllUser"); </PRE>
<PRE class=csharp name="code">} </PRE>

view plaincopy to clipboardprint?<?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.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap> <?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.luyu.ibatis.bean.User" />

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

resultClass="user">

<![CDATA[

select

name,

sex

from t_user

where name = #name#

]]>

</select>

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

<![CDATA[

select

name,

sex

from t_user

]]>

</select>

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

<![CDATA[

UPDATE t_user

SET

name=#name#,

sex=#sex#

WHERE id = #id#

]]>

</update>

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

INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# )

</insert>

<delete id="deleteUser" parameterClass="java.lang.String">

delete from t_user where id = #value#

</delete>

</sqlMap>
view plaincopy to clipboardprint?
view plaincopy to clipboardprint? Dao中的第一个让问如下: Dao中的第一个让问如下:
view plaincopy to clipboardprint? public static List<User> selectAllAccounts () throws SQLException { public static List<User> selectAllAccounts () throws SQLException {
view plaincopy to clipboardprint? return sqlMapper.queryForList("findAllUser"); return sqlMapper.queryForList("findAllUser");
view plaincopy to clipboardprint?} }
共有2个jar

1.jdts对sqlserver2000的jar

2. ibatis2.3.2.715.jar

所有代码如下:

User.java

view plaincopy to clipboardprint?
package com.luyu.ibatis.bean;

import java.io.Serializable;





public class User implements Serializable{

private int id;

private int sex;

private String name = "";



public User() {

}

public User(int id, int sex, String name) {

super();

this.id = id;

this.sex = sex;

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public int getSex() {

return sex;

}

public void setSex(int sex) {

this.sex = sex;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + id;

result = prime * result + ((name == null) ? 0 : name.hashCode());

result = prime * result + sex;

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

final User other = (User) obj;

if (id != other.id)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

if (sex != other.sex)

return false;

return true;

}

}

package com.luyu.ibatis.bean;

import java.io.Serializable;





public class User implements Serializable{

private int id;

private int sex;

private String name = "";



public User() {

}

public User(int id, int sex, String name) {

super();

this.id = id;

this.sex = sex;

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public int getSex() {

return sex;

}

public void setSex(int sex) {

this.sex = sex;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + id;

result = prime * result + ((name == null) ? 0 : name.hashCode());

result = prime * result + sex;

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

final User other = (User) obj;

if (id != other.id)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

if (sex != other.sex)

return false;

return true;

}

}view plaincopy to clipboardprint?
UserDao.java

UserDao.javaview plaincopy to clipboardprint?
<PRE class=java name="code">package com.luyu.ibatis.dao;



import java.io.IOException;

import java.io.Reader;

import java.sql.SQLException;

import java.util.List;



import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;



import com.luyu.ibatis.bean.User;

public class UserDao {

private static SqlMapClient sqlMapper;

static {

try {

Reader reader = Resources.getResourceAsReader("com/luyu/ibatis/ibatisConfig.xml");

sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);

reader.close();

} catch (IOException e) {

// Fail fast.

throw new RuntimeException(

"Something bad happened while building the SqlMapClient instance."

+ e, e);

}

}

public static List<User> selectAllAccounts () throws SQLException {

return sqlMapper.queryForList("findAllUser");

}



}</PRE>
<PRE class=java name="code"> </PRE>
<PRE class=java name="code">ibatisConfig.xml</PRE>
<PRE class=xml name="code"><?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="net.sourceforge.jtds.jdbc.Driver" />

<property name="JDBC.ConnectionURL"

value="jdbc:jtds:sqlserver://localhost:1433/ibatis" />

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

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

</dataSource>

</transactionManager>

<sqlMap resource="com/luyu/ibatis/User.xml" />

</sqlMapConfig></PRE>

view plaincopy to clipboardprint?package com.luyu.ibatis.dao; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.luyu.ibatis.bean.User; public class UserDao { private static SqlMapClient sqlMapper; static { try { Reader reader = Resources.getResourceAsReader("com/luyu/ibatis/ibatisConfig.xml"); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException( "Something bad happened while building the SqlMapClient instance." + e, e); } } public static List<User> selectAllAccounts () throws SQLException { return sqlMapper.queryForList("findAllUser"); } } package com.luyu.ibatis.dao;



import java.io.IOException;

import java.io.Reader;

import java.sql.SQLException;

import java.util.List;



import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;



import com.luyu.ibatis.bean.User;

public class UserDao {

private static SqlMapClient sqlMapper;

static {

try {

Reader reader = Resources.getResourceAsReader("com/luyu/ibatis/ibatisConfig.xml");

sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);

reader.close();

} catch (IOException e) {

// Fail fast.

throw new RuntimeException(

"Something bad happened while building the SqlMapClient instance."

+ e, e);

}

}

public static List<User> selectAllAccounts () throws SQLException {

return sqlMapper.queryForList("findAllUser");

}



}
view plaincopy to clipboardprint?
view plaincopy to clipboardprint?ibatisConfig.xml ibatisConfig.xml
view plaincopy to clipboardprint?<?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="net.sourceforge.jtds.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://localhost:1433/ibatis" /> <property name="JDBC.Username" value="sa" /> <property name="JDBC.Password" value="1234" /> </dataSource> </transactionManager> <sqlMap resource="com/luyu/ibatis/User.xml" /> </sqlMapConfig> <?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="net.sourceforge.jtds.jdbc.Driver" />

<property name="JDBC.ConnectionURL"

value="jdbc:jtds:sqlserver://localhost:1433/ibatis" />

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

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

</dataSource>

</transactionManager>

<sqlMap resource="com/luyu/ibatis/User.xml" />

</sqlMapConfig>
view plaincopy to clipboardprint?
User.xml

User.xmlview plaincopy to clipboardprint?
<PRE class=xml name="code"><?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.luyu.ibatis.bean.User" />

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

resultClass="user">

<![CDATA[

select

name,

sex

from t_user

where name = #name#

]]>

</select>

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

<![CDATA[

select

name,

sex

from t_user

]]>

</select>

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

<![CDATA[

UPDATE t_user

SET

name=#name#,

sex=#sex#

WHERE id = #id#

]]>

</update>

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

INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# )

</insert>

<delete id="deleteUser" parameterClass="java.lang.String">

delete from t_user where id = #value#

</delete>

</sqlMap></PRE>

view plaincopy to clipboardprint?<?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.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap> <?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.luyu.ibatis.bean.User" />

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

resultClass="user">

<![CDATA[

select

name,

sex

from t_user

where name = #name#

]]>

</select>

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

<![CDATA[

select

name,

sex

from t_user

]]>

</select>

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

<![CDATA[

UPDATE t_user

SET

name=#name#,

sex=#sex#

WHERE id = #id#

]]>

</update>

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

INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# )

</insert>

<delete id="deleteUser" parameterClass="java.lang.String">

delete from t_user where id = #value#

</delete>

</sqlMap>
view plaincopy to clipboardprint?
Test.java<PRE class=java name="code">package com.luyu.ibatis;



import java.sql.SQLException;

import java.util.List;



import com.luyu.ibatis.bean.User;

import com.luyu.ibatis.dao.UserDao;



public class Test {

public static void main(String[] args) {

try {

List<User> list = UserDao.selectAllAccounts();

System.out.println(list.size());

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i).getName());

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}



}



}</PRE>
<PRE class=java name="code"> </PRE>
<PRE class=java name="code">哈哈。第一天就这么多了。明天继续。是比hibernate简单。

</PRE>
标签:ibatis教程 ibatis
2

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: