`
leon.s.kennedy
  • 浏览: 110929 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Ibatis的CRUD

 
阅读更多

<?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="Account">

  <!-- Use type aliases to avoid typing the full classname every time. -->
  <typeAlias alias="Account" type="com.ibatis.model.Account"/>

  <!-- Result maps describe the mapping between the columns returned
       from a query, and the class properties.  A result map isn't
       necessary if the columns (or aliases) match to the properties
       exactly. -->
  <resultMap id="AccountResult" class="Account">
    <result property="id" column="ACC_ID"/>
    <result property="firstName" column="ACC_FIRST_NAME"/>
    <result property="lastName" column="ACC_LAST_NAME"/>
    <result property="emailAddress" column="ACC_EMAIL"/>
  </resultMap>

  <!-- Select with no parameters using the result map for Account class. -->
  <select id="selectAllAccounts" resultMap="AccountResult">
    select * from ACCOUNT
  </select>

  <!-- A simpler select example without the result map.  Note the
       aliases to match the properties of the target result class. -->
  <select id="selectAccountById" parameterClass="int" resultClass="Account">
    select
      ACC_ID as id,
      ACC_FIRST_NAME as firstName,
      ACC_LAST_NAME as lastName,
      ACC_EMAIL as emailAddress
    from ACCOUNT
    where ACC_ID = #id#
  </select>
  
  <!-- Insert example, using the Account parameter class -->
  <insert id="insertAccount" parameterClass="Account">
    insert into ACCOUNT (
      ACC_ID,
      ACC_FIRST_NAME,
      ACC_LAST_NAME,
      ACC_EMAIL
    )
    values (
      #id#, #firstName#, #lastName#, #emailAddress#
    )
  </insert>

  <!-- Update example, using the Account parameter class -->
  <update id="updateAccount" parameterClass="Account">
    update ACCOUNT set
      ACC_FIRST_NAME = #firstName#,
      ACC_LAST_NAME = #lastName#,
      ACC_EMAIL = #emailAddress#
    where
      ACC_ID = #id#
  </update>

  <!-- Delete example, using an integer as the parameter class -->
  <delete id="deleteAccountById" parameterClass="int">
    delete from ACCOUNT where ACC_ID = #id#
  </delete>

  <!-- Insert Account with sequence -->
  <insert id="insertAccountBySequence" parameterClass="Account">
   <selectKey resultClass="int" keyProperty="id">
    SELECT SEQ_ACCOUNT_PK_ID.NEXTVAL FROM DUAL
   </selectKey>
   
   insert into ACCOUNT (
      ACC_ID,
      ACC_FIRST_NAME,
      ACC_LAST_NAME,
      ACC_EMAIL
    )
    values (
      #id#, #firstName#, #lastName#, #emailAddress#
    )
  </insert>
 
</sqlMap>

-----------------------------------------------------------------

 

测试:

@Test
 public void insertAccountTest() throws SQLException{
  ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  AccountDAO dao = (AccountDAO)ctx.getBean("accountDAO");
  Account account = new Account();
  account.setId(104);
  account.setFirstName("ff");
  account.setLastName("ff");
  account.setEmailAddress("ee");
  dao.insertAccount(account);
  System.out.println("add ok!");
 }
 
 @Test
 public void selectAllAccountsTest() throws SQLException{
  ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  AccountDAO dao = (AccountDAO)ctx.getBean("accountDAO");
  for(Account ac : dao.selectAllAccounts()){
   System.out.println(ac);
  }
 }
 
 @Test
 public void selectAccountByIdTest() throws SQLException{
  ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  AccountDAO dao = (AccountDAO)ctx.getBean("accountDAO");
  Account account = dao.selectAccountById(100);
  System.out.println(account);
 }
 
 @Test
 public void updateAccountTest() throws SQLException{
  ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  AccountDAO dao = (AccountDAO)ctx.getBean("accountDAO");
  Account account = new Account();
  account.setId(100);
  account.setFirstName("ccc");
  account.setLastName("ccc");
  account.setEmailAddress("ccc");
  dao.updateAccount(account);
  System.out.println("updated!");
 }
 
 @Test
 public void deleteAccountTest() throws SQLException{
  ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  AccountDAO dao = (AccountDAO)ctx.getBean("accountDAO");
  dao.deleteAccount(0);
  System.out.println("deleted!");
 }
 
 @Test
 public void insertAccountBySequenceTest() throws SQLException{
  ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  AccountDAO dao = (AccountDAO)ctx.getBean("accountDAO");
  Account account = new Account();
  account.setId(100);
  account.setFirstName("ccc");
  account.setLastName("ccc");
  account.setEmailAddress("ccc");
  dao.insertAccountBySequence(account);
  System.out.println("saved with sequence!");
 }

2
2
分享到:
评论
12 楼 leon.s.kennedy 2012-05-29  
sokoo108 写道
hellostory 写道
sokoo108 写道
一般我是不写 resultMap 的,定义实体类属性的时候就于数据库字段一致


这个在实际开发中往往过于理想化!
加入订单类Order和订单明细类OrderItem都有一个字段叫做createTime(制单时间)或modifyTime(最后修改时间),并且需要一次查询取出一条订单及其明细(结合标签<association>),那么在SQL语句中createTime必须冲突~,诸如此类太多了。。。


是的,你说的这类问题的确遇到过,类似这种问题一般在sql里就被 as 了。


与其用sql as 多表联查容易混淆,倒不如定义个resultMap一目了然
至少我是这么认为的
11 楼 sokoo108 2012-05-28  
hellostory 写道
sokoo108 写道
一般我是不写 resultMap 的,定义实体类属性的时候就于数据库字段一致


这个在实际开发中往往过于理想化!
加入订单类Order和订单明细类OrderItem都有一个字段叫做createTime(制单时间)或modifyTime(最后修改时间),并且需要一次查询取出一条订单及其明细(结合标签<association>),那么在SQL语句中createTime必须冲突~,诸如此类太多了。。。


是的,你说的这类问题的确遇到过,类似这种问题一般在sql里就被 as 了。
10 楼 hellostory 2012-05-28  
sokoo108 写道
一般我是不写 resultMap 的,定义实体类属性的时候就于数据库字段一致


这个在实际开发中往往过于理想化!
加入订单类Order和订单明细类OrderItem都有一个字段叫做createTime(制单时间)或modifyTime(最后修改时间),并且需要一次查询取出一条订单及其明细(结合标签<association>),那么在SQL语句中createTime必须冲突~,诸如此类太多了。。。
9 楼 feijing 2012-05-28  
这是一套封装的方法。
8 楼 leon.s.kennedy 2012-05-28  
sokoo108 写道
一般我是不写 resultMap 的,定义实体类属性的时候就于数据库字段一致

有些时候不一致
好比DB中的字段命名规范为:表名缩写+下划线+字段名
实体类中映射时看着别扭,倒不如让他原生态 加个resultMap = =
7 楼 sokoo108 2012-05-28  
一般我是不写 resultMap 的,定义实体类属性的时候就于数据库字段一致
6 楼 pppqqq800 2012-05-28  
leon.s.kennedy 写道
pppqqq800 写道
已经定义了
  <resultMap id="AccountResult" class="Account">
    <result property="id" column="ACC_ID"/>
    <result property="firstName" column="ACC_FIRST_NAME"/>
    <result property="lastName" column="ACC_LAST_NAME"/>
    <result property="emailAddress" column="ACC_EMAIL"/>
  </resultMap>

就不用在sql 里写as 了吧~


这个没有试过,个人感觉可以不用as
resultMap是 实体类属性 与DB中的列 映射


以前看过spring 的demo   就是将bean 做成全映射 这样SQL就省去AS ,我是觉得ibatis挺好的  够灵活。
5 楼 leon.s.kennedy 2012-05-28  
jinpengaigo 写道
个人感觉 myibatis还是很好用的  起码不用调用哪些指定的方法  直接dao里映射到xml里的方法  很简洁


Mybaits也得调用对应的方法  sqlSession.insert("insertStudent", stu);
不知道您说的 dao里映射到xml里的方法 是怎么回事,还请指点
4 楼 leon.s.kennedy 2012-05-28  
pppqqq800 写道
已经定义了
  <resultMap id="AccountResult" class="Account">
    <result property="id" column="ACC_ID"/>
    <result property="firstName" column="ACC_FIRST_NAME"/>
    <result property="lastName" column="ACC_LAST_NAME"/>
    <result property="emailAddress" column="ACC_EMAIL"/>
  </resultMap>

就不用在sql 里写as 了吧~


这个没有试过,个人感觉可以不用as
resultMap是 实体类属性 与DB中的列 映射
3 楼 jinpengaigo 2012-05-28  
个人感觉 myibatis还是很好用的  起码不用调用哪些指定的方法  直接dao里映射到xml里的方法  很简洁
2 楼 pppqqq800 2012-05-28  
已经定义了
  <resultMap id="AccountResult" class="Account">
    <result property="id" column="ACC_ID"/>
    <result property="firstName" column="ACC_FIRST_NAME"/>
    <result property="lastName" column="ACC_LAST_NAME"/>
    <result property="emailAddress" column="ACC_EMAIL"/>
  </resultMap>

就不用在sql 里写as 了吧~
1 楼 missing1314521 2012-05-28  
正在学习ibatis,谢谢分享。

相关推荐

    ibatis简单CRUD例子

    在Ibatis中,CRUD(Create, Read, Update, Delete)是数据库中最基本的操作,下面我们将详细介绍如何使用Ibatis实现这些操作。 1. **创建(Create)**:创建通常涉及到插入新的记录。在Ibatis中,我们定义一个Insert...

    ibatis实现CRUD操作

    在IT行业中,数据库操作是必不可少的一部分,而Ibatis作为一个轻量级的持久层框架,为开发者提供了方便快捷的SQL映射工具,使得CRUD(创建、读取、更新、删除)操作变得更加简单易行。相较于Hibernate这样的ORM框架...

    iBatis 简单增删改查(CRUD)操作

    iBatis 是一款轻量级的Java持久层框架,它主要负责数据库的增删改查(CRUD)操作。在本教程中,我们将探讨如何利用iBatis进行基本的数据库操作,包括配置、映射文件、SQL语句的编写以及Java代码的实现。 **一、...

    ibatis mybatis crud 完整代码

    在IT行业中,`iBatis` 和 `MyBatis` 是两种非常流行的持久层框架,它们主要用于简化Java应用程序中的数据库操作。本篇文章将深入探讨这两个框架,并基于`CRUD`(Create, Read, Update, Delete)操作来阐述如何使用它们...

    ibatis的一个CRUD

    ### IBatis CRUD 实例详解 #### 一、IBatis简介 IBatis(现称为MyBatis)是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。IBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。IBatis...

    ibatis mybatis 分页 crud 完整代码

    本资源"ibatis mybatis 分页 crud 完整代码"包含了这两个框架在CRUD(创建、读取、更新、删除)操作以及分页功能上的实现,下面将详细介绍相关知识点。 1. **Ibatis**: Ibatis 是一款轻量级的Java ORM(对象关系...

    springMVC+Spring3.1+Ibatis整合CRUD

    整合SpringMVC、Spring和iBatis进行CRUD操作,通常需要以下步骤: 1. **配置SpringMVC**:创建`web.xml`配置文件,设置DispatcherServlet,并配置相应的SpringMVC配置文件。 2. **配置Spring**:在Spring配置文件...

    ibatis的CRUD+存储过程+动态查询

    本教程将深入探讨Ibatis如何实现CRUD(创建、读取、更新、删除)操作,如何调用存储过程,以及如何进行动态查询。 **创建(Create)** 在Ibatis中,创建数据通常通过SQL映射文件实现。每个映射文件包含一个或多个...

    封装通用的Spring3+Struts2+IBatis的CRUD

    "封装通用的Spring3+Struts2+IBatis的CRUD"是一项常见的实践,它整合了三个强大的开源框架,用于快速开发企业级Web应用。这个项目的核心目标是创建一个能够处理基本创建(Create)、读取(Retrieve)、更新(Update)和...

    IbatisDemo实现基本的CRUD操作

    本教程将深入讲解如何使用iBATIS来实现基本的CRUD(创建、读取、更新、删除)操作。 一、iBATIS简介 iBATIS,现在被称为MyBatis,是一个基于Java的持久层框架,它提供了SQL映射功能,将SQL与Java代码分离,提高了...

    <<ibatis框架源代码剖析>> 一个CRUD操作的ibatis项目实例

    《深入剖析iBatis框架:一个CRUD操作的项目实例》 iBatis,一个轻量级的Java持久层框架,以其简洁、灵活的特点,在Java开发领域占据了一席之地。本篇文章将通过一个具体的CRUD操作项目实例,帮助读者深入理解iBatis...

    iBatis执行非查询语句(CRUD,函数和过程)

    这篇博客“iBatis执行非查询语句(CRUD,函数和过程)”深入探讨了如何在iBatis中执行创建、读取、更新和删除(CRUD)操作,以及调用数据库存储过程和函数。 一、iBatis简介 iBatis最初由MyBatis的创始人Clinton ...

    ibatis 自己学的一个ibatis项目(只是打通了Oracle) 非常适合入门

    数据库自己建一张简单的表就行了,特别说明 只适合新手入门 只有三个java文件和三个xml配置文件 非常简单 但是包含了crud操作 非常适合新手入门,因为项目经理让我熟悉一下ibatis 我就自学写了一个,希望对你有帮助

    01_传智播客ibatis教程_准备ibatis环境

    6. **实战演示**:可能会通过一个简单的例子,如用户注册功能,展示如何使用iBatis进行CRUD操作。 7. **最佳实践**:可能还会涉及到如何优化iBatis配置,避免常见问题,以及如何结合Spring框架实现更高级的应用。 ...

    Ibatis 入门经典 实例

    1. Mybatis-Plus:在 Ibatis 基础上提供了更多的扩展功能,如 CRUD 操作、条件构造器等。 2. Mybatis Generator:自动化代码生成工具,自动生成 Entity、Mapper 和 XML 文件,提高开发效率。 通过以上内容,你将对 ...

    ibatisDemo.zip

    在这个"ibatisDemo.zip"压缩包中,我们可能找到了一系列关于快速入门Ibatis的资源,包括实际的增删改查(CRUD)示例和配套的讲解视频。这对于我们理解和学习Ibatis非常有帮助。 首先,让我们深入了解一下Ibatis的...

    C# IBatis IBatis基础 完整项目

    在这里,开发者可能通过IBatis与DB文件中的数据库进行交互,实现CRUD(创建、读取、更新、删除)操作。 通过这个项目,学习者可以了解如何在C#和Asp.Net环境下配置和使用IBatis,以及如何结合Mvc框架来设计和实现一...

    Ibatis

    SqlSession 提供了 CRUD 方法,如 `selectOne()`, `selectList()`, `insert()`, `update()` 和 `delete()`。 2.3 参数绑定:调用 SqlSession 的方法时,传入参数对象或 Map,Ibatis 会自动将参数映射到 SQL 语句中...

    关于ibatis连接MSSQL和MySQL的CRUD

    在IT行业中,数据库操作是应用程序开发的核心部分,而Ibatis作为一个优秀的持久层框架,使得Java开发者可以更加便捷地实现对数据库的CRUD(创建、读取、更新、删除)操作。本篇将深入探讨如何使用Ibatis连接MSSQL与...

Global site tag (gtag.js) - Google Analytics