iBatis初级入门案例

小弟今天在Javaeye上面碰到一个好文章,是iBatis的入门,上面讲了一个小例子,觉得不错,不过代码里面有部分错,已纠正!


我用的是MyEclipse8.5+MySQL;

第一步是建数据库

create database if not exists `sample`;
USE `sample`; 
drop   table   if   exists  `t_user`;

CREATE   TABLE  `t_user` (
  `id`  int  ( 11 )  NOT   NULL  auto_increment,
  ` name `  varchar  ( 50 )  default   NULL  ,
  `sex`  int  ( 11 )  default   NULL  ,
   PRIMARY   KEY    (`id`)
) ENGINE = InnoDB  DEFAULT  CHARSET = latin1;

insert   into  `t_user`  values  ( 1 ,  ' dagmom'  , 1 ),( 2 ,  ' guhao '  , 2 ),( 3 ,  ' 3 '  , 3 ),( 4 ,  ' 4 '  , 4 ),( 5 ,  ' 5 '  , 5 ); 
 


第二步是准备所需要的jar包

下面是我写的树形结构图



 

3,接下来开始配置 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="" />

                <property name="Pool.MaximumActiveConnections" value="10" />

                <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/dagmom/maps/User.xml" />

</sqlMapConfig> 
 

4,当然这里我么还需要写一个实体类,一边做OR Mapping映射

package com.dagmom.model;
import java.io.Serializable;
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    private Integer id;
    private String name;
    private Integer sex;
    public User() {
    }
    public Integer getId() {
        return this.id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getSex() {
        return this.sex;
    }
    public void setSex(Integer sex) {
        this.sex = sex;
    }
}
 

5,和hibernate一样,iBatis也需要配置文件
<?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.dagmom.model.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  
   ]]>
</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> 
 
这个比hibernate好的地方就是,他的sql语句是写在配置文件里面的,而且是原始的sql语句不想hql那样;

6,剩下就我们就是要写一个测试类

package com.dagmom;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.dagmom.model.User;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class ExampleMain {
    public static void update(){
        //首先初始化iBatis获得一个SqlMapClient对象
        String  resource = "com/dagmom/maps/SqlMapConfig.xml";
        SqlMapClient sqlMap = null;
        try{
            Reader reader = Resources.getResourceAsReader(resource);
            sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
        }catch(Exception e){
            e.printStackTrace();
        }

        //sqlMao系统初始化完毕,开始执行update操作
        try{
            sqlMap.startTransaction();
            User user = new User();
            user.setId(new Integer(1));
            user.setName("guhao");
            user.setSex(new Integer(1));
            sqlMap.update("updateUser", user);
            sqlMap.commitTransaction();
        }catch(SQLException e){
            System.out.println(e.getMessage());
        }finally{
            try{
                sqlMap.endTransaction();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static List getUser(){
        //首先初始化iBatis获得一个SqlMapClient对象
        String resource = "com/dagmom/maps/SqlMapConfig.xml";
        SqlMapClient sqlMap = null;
        List user = null;
        try{
            Reader reader = Resources.getResourceAsReader(resource);
            sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
        }catch(Exception e){
            e.printStackTrace();
        }
        //sqlMap系统初始化完毕,开始执行getAllUser操作
        try{
            sqlMap.startTransaction();
            user = sqlMap.queryForList("getAllUser", null);
            sqlMap.commitTransaction();
        }catch(SQLException e){
            System.out.println(e.getMessage());
        }finally{
            try{
                sqlMap.endTransaction();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        return user;
    }

    public static void main(String[] args) {
        System.out.print("x");
        update();
        List user = getUser();
        System.out.println(user);
    }
} 
 
这个程序很简单,而且大家对iBatis应该有入门级的了解了,以后就容易了!


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值