您的位置:首页 > 其它

使用JNDI的一个简单iBatis的例子

2009-12-16 15:55 295 查看
这个例子是我在看了官方文档和ibatis包中附带的一个小示例程序写的,没有使用DAO技术。这个例子的内容很简单,因此也很适合入门的新手。

我使用的环境是netbeans6.7,ibatis-2.3.4,mysql5.1,tomcat6.018。

整个过程分为两步:创建数据库和创建一个简单的web工程。

首先,创建一个示例数据库。我使用的sql语句如下:

Create database SimpleIBatis;
use SimpleIBatis;
create table User(
    ID int(3) not null auto_increment primary key,
    User_Name char(10) not null,
    User_Password char(10) not null,
    User_Time timestamp
);
insert into User(User_Name, User_Password) values('test', 'test');



其次,新建一个Java web工程

在netbeans中,新建一个名为”SimpleIBatis“的Java web工程,在库中添加ibatis的包。


源包中新建这几个文件:persistence.SqlMap.java, persistence.domain.User.java,
persistence.sql.SqlMapConfig.xml,
persistence.sql.User.xml,其实就是三个包加里面的四个文件。源码分别如下:

SqlMap.java:

package persistence;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import persistence.domain.User;
public class SqlMap {
    private static SqlMapClient sqlMapper;
    static{
        try{
            Reader reader = Resources.getResourceAsReader("persistence/sql/SqlMapConfig.xml");
            sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
            reader.close();
        }catch(IOException e){
            System.err.println("An error occured on reading SqlMapConfig.xml ");
            e.printStackTrace();
        }
    }
    public static User selectUserById(int id) throws SQLException{
        return (User) sqlMapper.queryForObject("selectUserById", id);
    }
}



User.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistence.domain;
public class User {
    private int id;
    private String username;
    private String password;
    private String time;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getTime() {
        return time;
    }
    public void setTime(String time) {
        this.time = time;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String userName) {
        this.username = userName;
    }
}



SqlMapConfig.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>
    <transactionManager type="JDBC" commitRequired="false">
        <dataSource type="JNDI">
            <property name="DataSource" value="java:comp/env/SimpleIBatis"/>
        </dataSource>
    </transactionManager>
    <sqlMap resource="persistence/sql/User.xml"/>
</sqlMapConfig>



User.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 namespace="User">
    <typeAlias alias="User" type="persistence.domain.User"/>
    <select id="selectUserById" parameterClass="int" resultClass="User">
        select
            ID as id,
            User_Name as username,
            User_Password as password,
            User_Time as time
        from User
        where ID = #id#
    </select>
</sqlMap>




在index.jsp中的代码:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="persistence.SqlMap, persistence.domain.User" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <p>
            <%
                User user = SqlMap.selectUserById(1);
                String username = user.getUsername();
                String password = user.getPassword();
            %>
            UserName:<%=username%><br/>
            PassWord:<%=password%>
        </p>
    </body>
</html>






附:

刚刚测试了下,在User.xml的select语句中可以不将全部字段选出来,那些没有在select的字段默认值为null之类的。如下面是我测试用的select语句:

<?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 namespace="User">
    <typeAlias alias="User" type="persistence.domain.User"/>
    <select id="selectUserById" parameterClass="int" resultClass="User">
        select
            
           
            User_Password as password
           
        from User
        where ID = #id#
    </select>
</sqlMap>





结果如图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: