`

Ibatis 的基本用法

阅读更多
Ibatis 的基本用法:
1.需要配置Ibatis 的jar包:
ibatis-sqlmap-2.jar
ibatis-common-2.jar
2.创建工程:
建立Vo:UserInfo 类

Copy code

package com.sunyang.stuibatis.domain;

import java.util.List;
import java.util.StringTokenizer;
import java.util.ArrayList;

/**
* Created by IntelliJ IDEA.
* User: fanhongming
* Date: 2005-1-24
* Time: 17:08:42
* To change this template use File | Settings | File Templates.
*/
public class UserInfo {
  private Integer id;
  private String userNO;
  private String userName;
  private Integer userAge;
  private List idList;

 

  public List getIdList() {
    return idList;
  }

  public void setIdList(List idList) {
    this.idList = idList;
  }

  public Integer getId() {
    return id;
  }

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

  public String getUserNO() {
    return userNO;
  }

  public void setUserNO(String userNO) {
    this.userNO = userNO;
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public Integer getUserAge() {
    return userAge;
  }

  public void setUserAge(Integer userAge) {
    this.userAge = userAge;
  }

  public UserInfo() {
    this.id = new Integer(-1);
    this.userNO = "";
    this.userName = "";
    this.userAge = new Integer(-1);

  }
}

3.配置xml (以sqlserver为例)
DataAccess.xml
代码如下:

Copy 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="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
        <property name="JDBC.ConnectionURL"
          value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=iBatis"/>
        <property name="JDBC.Username" value="sa"/>
        <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 userinfo"/>
        <property name="Pool.PingEnabled" value="false"/>
        <property name="Pool.PingConnectionsOlderThan" value="1"/>
        <property name="Pool.PingConnectionsNotUsedFor" value="1"/>
    </dataSource>
  </transactionManager>
  <sqlMap resource="com/sunyang/stuibatis/persistence/iBatis/map/sunyang.xml"/>
<!-- 此处为配置表和Vo(DTO) 的映射 -->
</sqlMapConfig>

配置表和Vo(DTO) 的映射:sunyang.xml

Copy code

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="UserInfo">
  <cacheModel id="UserInfoCache" type="LRU">
    <flushInterval hours="24"/>
    <flushOnExecute statement="insertUserInfo"/>
    <flushOnExecute statement="updateUserInfo"/>
    <flushOnExecute statement="deleteUserInfo"/>
    <flushOnExecute statement="selectUserInfo"/>
  <property name="cache-size" value="100"/>
  </cacheModel>

  <resultMap id="userInfo" class="com.sunyang.stuibatis.domain.UserInfo">
    <result property="id" column="id" />
    <result property="userNO" column="userNO"/>
    <result property="userName" column="userName"/>
    <result property="userAge" column="userAge"/>
  </resultMap>


  <insert id="insertUserInfo">
    insert into userinfo (userNO,userName,userAge) values(#userNO#,#userName#,#userAge#)
    <selectKey resultClass="java.lang.Integer" keyProperty="id">
        SELECT IDENT_CURRENT('userinfo') as id
    </selectKey>
  </insert>


  <update id="updateUserInfo">
    update userInfo set
    userNO=#userNO#,
    userName=#userName#,
    userAge =#userAge#
    where id=#id#

  </update>

  <delete id="deleteUserInfo">
    delete from userInfo
    where id =#id#
  </delete>

  <select id="selectUserInfo" cacheModel="UserInfoCache" resultMap="userInfo">
    select id,userNO,userName,userAge
    from userInfo
    <dynamic prepend="where">
        <isNotEqual prepend="AND" property="id" compareValue="-1">
          (id=#id#)
        </isNotEqual>
        <isNotEmpty prepend="AND" property="userNO">
          (userNO=#userNO#)
        </isNotEmpty>
        <isNotEmpty prepend="AND" property="userName">
          (userName=#userName#)
        </isNotEmpty>
    </dynamic>
  </select>

</sqlMap>


写调用类:

Copy code

public class UserInfoSqlMapDao implements UserInfoDao {

  public SqlMapClient sqlMap;
//取得sqlmap

  public boolean getSqlMapClient() {
    String resource = "com/sunyang/stuibatis/persistence/iBatis/map/DataAccess.xml";
    Reader reader = null;
    try {
        reader = Resources.getResourceAsReader(resource);
    } catch (IOException e) {
        e.printStackTrace();
    }
    XmlSqlMapClientBuilder xmlBuilder = new XmlSqlMapClientBuilder();
    sqlMap = xmlBuilder.buildSqlMap(reader);
    return false;
  }
//插入信息

  public boolean insertUserInfo(Object obj) {
    UserInfo user = (UserInfo) obj;
    try {

        sqlMap.insert("insertUserInfo", user);           //todo "insertUserinfo "   为xml中的preparestatement 的名字
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return false;
  }
public static void main(String[] args) {
    UserInfoSqlMapDao dao = new UserInfoSqlMapDao();
    UserInfo user = new UserInfo();
    user.setUserName("changchun");
    user.setUserNO("ww");
    user.setUserAge(new Integer(1));

    dao.getSqlMapClient();
    dao.insertUserInfo(user);       //todo 插入
    user.setUserName("beijng");
  user.setUserNO("beijing 2008");
  dao .updataUserInfo(user);     //todo 更新*/
  dao.deleteUserInfo(user);
UserInfo uu = (UserInfo) dao.selectOne(user);   //todo 单条查询
  System.out.println("uu.username=" + uu.getUserName());
  System.out.println("uu.userno=" + uu.getUserNO());
}
}
分享到:
评论

相关推荐

    ibatis实现的学生信息管理示例

    通过本示例的学习,初学者可轻松掌握ibatis框架的基本使用方法与基本技能

    iBATIS实战

    5.1 更新数据的基本方法 82 5.1.1 用于非查询SQL语句的SqlMap API 82 5.1.2 非查询已映射语句 83 5.2 插入数据 84 5.2.1 使用内联参数映射 84 5.2.2 使用外部参数映射 85 5.2.3 自动生成的键 86 5.3 更新和删除数据 ...

    ibatis开发指南

    ibatis开发指南 适用于初学ibatis的朋友 介绍ibatis的基本用法与配置

    eclipse+spring+ibatis搭建项目基础代码

    自己亲自用eclipse+spring+ibatis搭建的基本框架,含有所需的JAR包,下载后只需更改sql2005的连接字符串,即WEB-INF/db-context.xml中的配置,并更改ibatis的xml文件中的sql语句即可运行。

    ibatis 开发指南(pdf)

    使用ibatis 提供的ORM 机制,对业务逻辑实现人员而言,面对的是纯粹的Java 对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求...

    ibatis 开发指南

    使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求...

    高效使用JavaEE ORM框架

    虽然Java领域有无数的ORM框架,如Hibernate,iBatis,TopLink,JDO,JPA……但是这些ORM框架基本上大同小异。很多初学者对JDBC的复杂...本文仅简单整理一下ORM的原理,基本用法,以及如何避免各种陷阱的基本编程原则。

    基于Servlet3.0+IBatis+BootStrip技术构建简单会议管理系统

    本课程针对有一定程序开发基础并有志于JAVA WEB开发的学员,理解MVC开发模式,能够熟练使用PowerDesigner 设计数据库,熟练使用mybatis进行开发,熟悉Servlet3.0的一些新特性,掌握bootstrap基本用法 课程大纲 ...

    深入浅出Hibernate中文版 part2

    这是第二部分。 目录 第1部分 持久层 第1章 面向应用的持久层设计 1.1 持久层概述 1.2 持久层设计 1.3 持久层设计与ORM 1.4 持久层框架概述 ...11.2 Eclipse安装和基本使用方法 11.3 快速启动代码 参考资料

    深入浅出Hibernate中文版 part1

    由于文件太大,所以分成了两个压缩包 目录 第1部分 持久层 第1章 面向应用的持久层设计 1.1 持久层概述 1.2 持久层设计 1.3 持久层设计与ORM ...11.2 Eclipse安装和基本使用方法 11.3 快速启动代码 参考资料

    学习java的30个目标

    1.你需要精通面向对象分析与设计(OOA/OOD)...你需要学习java数据库技术,如JDBCAPI并且会使用至少一种persistence/ORM构架,例如Hibernate,JDO, CocoBase,TopLink,InsideLiberator(国产JDO红工厂软件)或者iBatis。

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

    深入浅出Hibernate

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    \深入浅出Hibernate

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    深入浅出Hibernate2

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    《深入浅出Hibernate》1

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    JSP网络编程学习笔记源代码 part2

    第四篇为“数据库访问技术”,主要讲述JDBC技术及JSP和Servlet如何通过JDBC访问数据库,以及如何改进数据库的访问和目前流行的Hibernate、iBATIS及Spring集成访问的支持;第五篇为“标签语言和表达式语言”,主要...

    Step By Step写测试(书签版).pdf

    4.2.1 方法一:使用@MockClass和 @UsingMocksAndStubs 4.2.2 方法二:使用Mockit.setUpMock() 4.2.3 方法三:In-line mock classes 4.2.4 使用it来访问mock对象本身 4.3 基于行为的jmockit测试 4.3.1 Mock对象 4.3.2...

    深入浅出Hibernate(PDF)第一部分

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    深入浅出hibernate(PDF)第三部分

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

Global site tag (gtag.js) - Google Analytics