ibatis-2

 

5、创建测试程序测试:

 

 

 

package com.bjsxt.crm.model;

 

import java.io.Reader;

import java.util.Iterator;

import java.util.List;

 

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

 

/**

 *最简单的形式!

 *@authorLee

 *

 */

publicclass UserTest {

 

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) throws Exception{

 

       //从配置文件中得到SqlMapClient对象

       Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");

       SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);

       reader.close();

      

       //创建用户数据

       for(int i=0; i<10; i++){

           User user = new User();

           user.setUsername("用户"+i);

           user.setPassword("密码"+i);

           sqlMapper.insert("insertUser", user);

       }

      

       //查询用户数据

       List users = sqlMapper.queryForList("selectAllUsers");

       for (Iterator iter = users.iterator(); iter.hasNext();) {

           User user = (User) iter.next();

           System.out.println(user.getUsername());

       }

      

       //查询特定用户的数据

       User user = (User)sqlMapper.queryForObject("selectUser", 1);

       System.out.println("用户【id="+1+"】的名称是"+user.getUsername());

      

       //更新用户的信息

       user = new User();

       user.setId(3);

       user.setUsername("更改之后的用户名称");

       user.setPassword("密码被更改");

       sqlMapper.update("updateUser", user);

      

       //删除用户的信息

       sqlMapper.delete("deleteUser", 6);

    }

 

}

 

 

SqlMapClient对象

这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作。这个类是我们使用iBATIS的最主要的类。它是线程安全的。通常,将它定义为单例。(与hibernatesessionFactory的定义类似)。如:

import java.io.Reader;

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

 

public class IbatisSQLMapConfig {

 

    private static final SqlMapClient sqlMap;

 

    //在静态区块中初试化返回

    static {

        try {

            //声明配置文件的名称(映射文件被定义在其中)

            String resource = "sql_map_config.xml";

 

            //利用工具类Resources来读取到配置文件

            Reader reader = Resources.getResourceAsReader(resource);

 

            //创建SqlMapClient接口的变量实例

            sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

 

        } catch (Exception e) {

            e.printStackTrace();

            throw new RuntimeException(

                    "Error initializing MyAppSqlConfig class. Cause: " + e);

        }

    }

    public static SqlMapClient getSqlMapInstance() {

        //提供静态方法返回静态区块中得到的SqlMapClient

        return sqlMap;

    }

}

 

How To

如何获得刚插入记录的自增长ID值?

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

    insert into t_user values (

        null,#username#,#password#

    )

    <selectKey resultClass="int" keyProperty="id">

        SELECT @@IDENTITY AS ID

    </selectKey> 

  </insert>

       User user = new User();

       user.setUsername("张三");

       user.setPassword("张三密码");

      

       //如果主键是自动生成的,则其返回值可以通过<selectKey>标签来设置

       //如果不通过<selectKey>标签来设置,则返回值为空!

       //<selectKey >中的keyProperty,是指定User中的id属性,当调用结束之后,

       //user对象的id值和insert方法的返回值都是这条记录的ID值!

       Object obj  = sqlMapper.insert("insertUser", user);

 

parameterClass的使用

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

    insert into t_user values (

        null,#username#,#password#

    )

    <selectKey resultClass="int" keyProperty="id">

        SELECT @@IDENTITY AS ID

    </selectKey> 

  </insert>

 

  <insert id="insertUser2">

    insert into t_user values (

        null,#username#,#password#

    )

    <selectKey resultClass="int" keyProperty="id">

        SELECT @@IDENTITY AS ID

    </selectKey> 

  </insert>

 

insertUser使用了parameterClass,所以必需传入User类型的对象

       User user = new User();

       user.setUsername("张三");

       user.setPassword("张三密码");

      

       //传递进去的对象,必须是User类型

       Object obj  = sqlMapper.insert("insertUser", user);

 

insertUser2没有使用parameterClass,所以可以传入任意具有相应属性值的对象

       JustAnObject anobj = new JustAnObject();

       anobj.setUsername("用户名");

       anobj.setPassword("用户密码");

      

       <span style='font-size: 10pt; color: #3f7f5f; font-family: "Courier New"

你可能感兴趣的:(sql,Hibernate,xml,ibatis,配置管理)