ibatis学习的小实例

来源:互联网 发布:php cms使用 编辑:程序博客网 时间:2024/05/15 08:34

2.配置文件(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="SIMPLE">
   <property name="JDBC.Driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
   <property name="JDBC.ConnectionURL" value="jdbc:microsoft:sqlserver://168.168.28.247:1433;SelectMethod=Cursor;DatabaseName=TestYu" />
   <property name="JDBC.Username" value="sa" />
   <property name="JDBC.Password" value="888888" />
   <property name="Pool.MaximumActiveConnections" value="100" />
   <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 t_user" />
   <property name="Pool.PingEnabled" value="false" />
   <property name="Pool.PingConnectionsOlderThan" value="1" />
   <property name="Pool.PingConnectionsNotUsedFor" value="1" />
  </dataSource>
 </transactionManager>
 <sqlMap resource="com/yuqiang/sample/User.xml" />
</sqlMapConfig>

3.表中字段的POJO

package com.yuqiang.pojo;

import java.io.Serializable;

public class User implements Serializable{
 private Integer id;
 
 private String name;
 
 private Integer sex;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Integer getSex() {
  return sex;
 }

 public void setSex(Integer sex) {
  this.sex = sex;
 }

}

4.操作数据库的配置文件

<?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="com.yuqiang.pojo.User"/>
<select id="getUser" parameterClass="java.lang.String"  resultClass="user">
  select  name,sex
  from t_user
  where name=#name#
</select>

<update id="updateUser" parameterClass="user">
update t_user
set name=#name#,
sex=#sex#
where id=#id#
</update>

<insert id="insertUser" parameterClass="user">
insert into t_user(id,name,sex)
values(#id#,#name#,#sex#)
</insert>

<delete id="delUser" parameterClass="java.lang.String">
delete
from t_user
where id=#t_user#
</delete>
</sqlMap>

5.测试文件:

package com.yuqiang.test;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.yuqiang.pojo.User;


public class Test {
 public static SqlMapClient sqlMapper;
 public static void main(String[] args) throws SQLException {
   Reader reader;
  try {
   reader = Resources.getResourceAsReader("com/yuqiang/sqlmap/SqlMapConfig.xml");
   sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
   try {
    sqlMapper.startTransaction();
    User user=new User();
    user.setId(new Integer(2));
    user.setName("xiaoyu");
    user.setSex(new Integer(1));
    sqlMapper.update("updateUser", user);
    sqlMapper.commitTransaction();
   } catch (SQLException e) {
    e.printStackTrace();
   } finally {
    sqlMapper.endTransaction();
   }
   
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
  }
 }

}
 

    总结,上面是一个小小的ibatis的实际例子,但是还是有点不完善的地方,我就将我学习的总结上面

1.项目工程很大的话不可能经常去new 对象

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;
//基类,所有的DAO须继承此方法
public class DAO {
   public static SqlMapClient sqlMapper;
       static {
      try {
       
        Reader reader = Resources.getResourceAsReader("com/yuqiang/sqlmap/SqlMapConfig.xml");
        sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);

        reader.close();
      } catch (IOException e) {
        System.out.println("Something bad happened while building the SqlMapClient instance." + e);
      }
    }
   //传给它一个方法ID和sql语句值可执行此SQL语句
   public  List getSQLResult (String methodID,String sql) throws SQLException {   
    return sqlMapper.queryForList(methodID,sql);
    }
  
}

2.配置多个操作数据库文件

<?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="SIMPLE">
   <property name="JDBC.Driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
   <property name="JDBC.ConnectionURL" value="jdbc:microsoft:sqlserver://168.168.28.247:1433;SelectMethod=Cursor;DatabaseName=TestYu" />
   <property name="JDBC.Username" value="sa" />
   <property name="JDBC.Password" value="888888" />
   <property name="Pool.MaximumActiveConnections" value="100" />
   <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 t_user" />
   <property name="Pool.PingEnabled" value="false" />
   <property name="Pool.PingConnectionsOlderThan" value="1" />
   <property name="Pool.PingConnectionsNotUsedFor" value="1" />
  </dataSource>
 </transactionManager>
 <sqlMap resource="com/yuqiang/sample/User1.xml" />

 <sqlMap resource="com/yuqiang/sample/User2.xml" />

 <sqlMap resource="com/yuqiang/sample/User3.xml" />(配置了多个操作数据库的文件)
</sqlMapConfig>

原创粉丝点击