`

一个使用ibatis对数据库增删改查的例子

阅读更多

一个使用ibatis对数据库增删改查的例子:
这里用的开发环境是:Eclipse3.2+mysql5.0.20,ibatis包是ibatis-common-2.jar,
ibatis-dao-2.jar,ibatis-sqlmap-2.jar,mysql包是mysql-connector-java-5.0.3-bin.jar.
步骤:
1.创建数据库:
 create database itcast;
 use itcast;
创建表:
 create table student
 (
  id int primary key auto_increment,
  firstname varchar(20) not null,
  lastname varchar(20) not null
 )

2.创建POJO类,Student.java,此程序中用到的所有类都放在cn.itcast包下面,
 其他的配置文件都放在txd.configfile包下面。
 package cn.itcast;
 
 public class Student {
  private Integer id;
 
  private String firstname;
 
  private String lastname;
 
  public String getFirstname() {
   return firstname;
  }
 
  public void setFirstname(String firstname) {
   this.firstname = firstname;
  }
 
  public Integer getId() {
   return id;
  }
 
  public void setId(Integer id) {
   this.id = id;
  }
 
  public String getLastname() {
   return lastname;
  }
 
  public void setLastname(String lastname) {
   this.lastname = lastname;
  }
 }

3.跟Student类对应的xml配置文件Student.xml,
 <?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="student">
  <!--insert元素,id属性值作为标识此元素,parameterClass属性是参数的类型,此
  属性的值是Java类的全限定名(即包括类的包名)。它是可选的,但强烈建议使用。
  它的目的是 限制输入参数的类型为指定的Java类,并优化框架的性能。##符号中
  间的名字来自此类的属性.-->
  <insert id="insert_student" parameterClass="cn.itcast.Student">
   insert into student(firstname,lastname) values
   (#firstname#,#lastname#)
  </insert>
 
  <select id="getStudent" resultClass="cn.itcast.Student">
   select id, firstname, lastname from student
  </select>
 
  <delete id="delStudent" parameterClass="int">
   delete from student where id=#value#
  </delete>
 
  <update id="updateStudent" parameterClass="cn.itcast.Student">
   update student set firstname=#firstname#,lastname=#lastname#
   where id=#id#
  </update>
 </sqlMap>

4.jdbc.properties文件,存储数据库连接的driver,url,username,password等信息,
 driver=com.mysql.jdbc.Driver
 url=jdbc:mysql:///itcast
 username=root
 password=

5. SqlMap的配置文件SqlMapConfigExample.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>
  <!--<properties>元素,用于在配置文件中使用标准的Java属性文件(name=value)-->
  <properties resource="txd/configfile/jdbc.properties" />
  <!--
  cacheModelsEnabled:全局性地启用或禁用SqlMapClient的所有缓存model。
  enhancementEnabled:全局性地启用或禁用运行时字节码增强,以优化访问
   Java Bean属性的性能,同时优化延迟加载的性能。
  lazyLoadingEnabled:全局性地启用或禁用SqlMapClient的所有延迟加载。
  maxRequests:同时执行SQL语句的最大线程数。
  maxSessions:同一时间内活动的最大session数。
  maxTransactions:同时进入SqlMapClient.startTransaction()的最大线程数。
  useStatementNamespaces:如果启用本属性,必须使用全限定名来引用mapped statement。
   Mapped statement的全限定名由sql-map的名称和mapped-statement的名称合成。
  -->
  <settings cacheModelsEnabled="true" enhancementEnabled="true"
   lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
   maxTransactions="5" useStatementNamespaces="false" />
 
  <!--
  <transationManager>元素让您为SQL Map配置事务管理服务。属性type指定所
  使用的事务管理器类型。这个属性值可以是一个类名,也可以是一个别名。
  包含在框架的三个事务管理器分别是:JDBC,JTA和EXTERNAL。
  -->
  <transactionManager type="JDBC">
   <!--dataSource元素为SQL Map数据源设置了一系列参数。-->
   <dataSource type="SIMPLE">
    <property name="JDBC.Driver" value="${driver}" />
    <property name="JDBC.ConnectionURL" value="${url}" />
    <property name="JDBC.Username" value="${username}" />
    <property name="JDBC.Password" value="${password}" />
   </dataSource>
  </transactionManager>
  <!--<sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。-->
  <sqlMap resource="txd/configfile/Student.xml" />
 </sqlMapConfig>

6.MySqlMapClient.java类,用于产生一个SqlMapClient
 package cn.itcast;
 
 import java.io.IOException;
 import java.io.Reader;
 
 import com.ibatis.common.resources.Resources;
 import com.ibatis.sqlmap.client.SqlMapClient;
 import com.ibatis.sqlmap.client.SqlMapClientBuilder;
 
 public class MySqlMapClient {
 
  private static SqlMapClient sqlMapClient;
 
  static {
   String resource = "txd/configfile/SqlMapConfigExample.xml";
   Reader reader = null;
   try {
    reader = Resources.getResourceAsReader(resource);
    sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 
  public static SqlMapClient getSqlMapInstance() {
   return sqlMapClient;
  }
 
 }

7.StudentManager 类测试一下上面的代码,
 package cn.itcast;
 
 import java.sql.SQLException;
 import java.util.List;
 
 import com.ibatis.sqlmap.client.SqlMapClient;
 
 public class StudentManager {
 
  public static void main(String[] args) {
   SqlMapClient sqlMap = MySqlMapClient.getSqlMapInstance();
 
   // insert一条记录
 
   // Student student = new Student();
   // student.setFirstname("zhang");
   // student.setLastname("san");
   // try {
   // sqlMap.insert("insert_student", student);
   // System.out.println("插入成功!");
   // } catch (SQLException e) {
   // e.printStackTrace();
   // }
 
   // delete一条记录
 
   // try {
   // int result = sqlMap.delete("delStudent", 5);
   // System.out.println(result);
   // } catch (SQLException e) {
   // e.printStackTrace();
   // }
 
   // update一条已存在的记录
 
   Student student = new Student();
   student.setId(1);
   student.setFirstname("jiang");
   student.setLastname("zemin");
   try {
    int result = sqlMap.update("updateStudent", student);
    System.out.println(result);
   } catch (SQLException e) {
    e.printStackTrace();
   }
 
   // query获得多条记录
 
   // try {
   // List<Student> list = sqlMap.queryForList("getStudent", null);
   // for (Student student : list) {
   // System.out
   // .println(student.getId() + "\t"
   // + student.getFirstname() + "\t"
   // + student.getLastname());
   // }
   // } catch (SQLException e) {
   // e.printStackTrace();
   // }
 
   // query单条记录
 
   // try {
   // Student student = (Student) sqlMap.queryForObject("getStudent", 1);
   // System.out.println(student.getId());
   // System.out.println(student.getFirstname());
   // System.out.println(student.getLastname());
   // } catch (SQLException e) {
   // e.printStackTrace();
   // }
  }
 
 }

分享到:
评论
2 楼 gmingsoft04 2008-08-25  
   // query单条记录

   // try {
   // Student student = (Student) sqlMap.queryForObject("getStudent", 1);
   // System.out.println(student.getId());
   // System.out.println(student.getFirstname());
   // System.out.println(student.getLastname());
   // } catch (SQLException e) {
   // e.printStackTrace();
   // }
  }
当数据库有2条以上的记录时,会报错!
java.sql.SQLException: Error: executeQueryForObject returned too many results.
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:108)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:561)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:536)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:93)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:70)
at cn.itcast.StudentManager.main(StudentManager.java:64)
____________
在网上查了下,好象要这样写:
/**
* @param vo
* @return
* @throws DaoException
* 查找一条记录
*/
public HashMap findByPk(HashMap vo) throws DaoException {
try {
SqlMap sqlMap = DaoCommon.getSqlMap(DaoCommon.getDefautDao());
return (HashMap) sqlMap.executeQueryForObject(
"findByPrimaryKeyattachmentDao",
vo);
} catch (Exception e) {
throw new DaoException(e);
}
}
1 楼 glamey 2008-03-17  
这样写是不是有点太烦琐了。

相关推荐

    一个最简单的IBatis增删改查操作例子

    本文将深入解析一个基于IBatis实现的最简单的增删改查(CRUD)操作实例,帮助初学者快速理解和掌握其核心概念。 首先,我们要理解什么是IBatis。IBatis(现更名为MyBatis)是由Apache Software Foundation维护的一...

    struts+spring+ibatis做的一个增删改查例子

    这个例子是利用这三个框架实现了一个基础的增删改查(CRUD)功能,涵盖了数据库操作、业务逻辑处理以及用户界面交互。 **Struts** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,负责处理用户的...

    ibatis + oracle 增删改查例子

    本示例“ibatis + oracle 增删改查例子”将向我们展示如何利用这两个工具进行基本的数据操作。 首先,`iBatis`的核心是SQL Map配置文件,它包含了SQL语句和映射规则。在`MyEclipse`中导入这个项目后,你需要找到并...

    struts2+spring+ibatis做的增删改查的小例子

    这个"struts2+spring+ibatis做的增删改查的小例子"是一个针对初学者的实践教程,旨在帮助学习者理解这三个框架如何协同工作以实现数据的CRUD(创建、读取、更新、删除)操作。 首先,Struts2作为MVC(Model-View-...

    一个S2S+ibatis一个增删改查的例子(由原先SSH2改编)

    标题中的“S2S+ibatis一个增删改查的例子”指的是使用Struts2和iBatis框架实现的典型数据库操作应用。Struts2是一个基于MVC设计模式的Java Web框架,而iBatis则是一个SQL映射框架,用于简化数据库访问。这个例子将...

    ibatis对数据库进行增删改查操作的小例子

    -- 更多的增删改查操作 --&gt; ``` 同时,需要创建对应的Mapper接口: ```java public interface UserMapper { void insertUser(User user); // 其他方法 } ``` 在Service层,我们可以使用SqlSession来执行SQL...

    struts1.2+ibatis+DWR2.0+MySql5.0增删改查的小例子

    总结起来,这个"struts1.2+ibatis+DWR2.0+MySql5.0增删改查的小例子"涵盖了Web开发中的一些核心技术和实践,对于初学者来说,这是一个很好的学习资源,能够帮助他们快速掌握Java Web开发的基础知识,并逐步深入到更...

    一个S2S+ibatis一个增删改查的例子(由SSH2例子改编)

    关于struts2.0+spring+ibatis框架的一个增删改查及分页和排序 数据库:sqlserver 2000 服务器:tomcat 如果是oracle的只需修改Spring配置文件的 驱动 及 数据库对应的表即可

    SSI框架搭建增删改查以及分页

    总之,"SSI框架搭建增删改查以及分页"项目是一个典型的Java Web开发实践,它涵盖了MVC架构、依赖注入和数据库操作等多个关键点。对于初学者来说,这个项目提供了很好的学习机会,能够帮助他们理解并掌握这些核心技术...

    ibate 的增删改查例子

    总的来说,"ibate 的增删改查例子"主要展示了如何利用Ibatis进行基本的数据操作,包括配置数据库连接、定义Mapper接口和XML映射文件、使用动态SQL以及事务管理。通过对这些知识点的掌握,开发者可以更高效地处理...

    struts2+spring+ibatis 增删改查例子

    这个例子展示了如何将这三个框架集成在一起,实现对MySQL数据库的增删改查操作。接下来,我们将深入探讨这些技术及其在实际项目中的应用。 首先,Struts2 是一个基于MVC(Model-View-Controller)设计模式的Web应用...

    ssi框架集成增删改查及存储过程(spring2.5+struts2.1+ibatis2.3)

    在这个项目中,开发者利用了Spring 2.5、Struts 2.1和iBatis 2.3这三个组件来实现数据的增删改查功能,并且结合了存储过程来增强数据库操作的灵活性。同时,通过Junit进行单元测试,确保代码的正确性和稳定性。 ...

    SSI框架整合(Oracle数据库增删改查示例)

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 项目访问路径 localhost:8888/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...

    Struts2+Spring2.5+Ibatis完整增删改查Demo(含全部jar包)

    这个"Struts2+Spring2.5+iBatis完整增删改查Demo"提供了一个完整的集成示例,包括所有必要的jar包,使得开发者可以快速在Mycelipse环境中搭建并运行项目。 **Struts2框架**: Struts2是基于MVC设计模式的Web应用...

    Ibatis的简单例子(增删改查,联合查询等)

    在这个"Ibatis的简单例子"中,我们将探讨如何使用Ibatis进行数据库的增删改查(CRUD)操作以及联合查询。 1. **安装与配置**: 在开始之前,你需要在项目中添加Ibatis的依赖,通常是通过Maven或Gradle。在Maven的`...

    Ibatis资源,增删改查代码都有

    这是本人只使用Ibatis做的一个增删改查的例子,里面注释写得很详细,可以直接运行,使用的是Oracle数据库,数据库表只有两个字段,id 跟name,表名就为Ibatis.如有什么不懂也可加我QQ:519603116

    简单、上手快的ibatis增删改查例子

    它摒弃了传统的Hibernate等ORM(对象关系映射)框架的复杂性,以一种简单直观的方式实现了数据的增删改查。Ibatis的特性包括易于学习、配置简洁以及SQL定制性强,这些特点使其成为初学者和项目中的理想选择。 **...

    struts2+spring+ibatis 增删改查例子(2)

    在这个例子中,它们被用来实现一个基本的数据管理功能,包括增、删、改、查操作,并且基于MySQL数据库进行数据存储。Apache DBCP是一个连接池库,用于优化数据库连接资源的管理和复用。 首先,Struts2作为表现层...

    springboot+mybatis实现简单的单表增删改查

    在本文中,我们将深入探讨如何使用SpringBoot框架与MyBatis ORM工具来实现对单一数据库表的简单增删改查(CRUD)操作。SpringBoot以其便捷的集成、自动配置和简化开发流程而受到广大开发者欢迎,而MyBatis则是一个轻...

    struts2+spring+ibatis增删改查(完整项目,导入即可运行)

    这个压缩包提供的是一个完整的项目示例,涵盖了基于这三个框架的增删改查操作,非常适合初学者理解和实践。 首先,Struts2是一个强大的MVC框架,它提供了请求分发、视图展现和业务逻辑控制等功能。在Struts2中,...

Global site tag (gtag.js) - Google Analytics