`
NetBus
  • 浏览: 145078 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

改造iBatis,使其支持自动生成sql语句(2)

阅读更多

改造iBatis,使其支持自动生成sql语句(2)

  上篇讲到基本思路和代码修改的切入点。这篇继续讲实现的细节的demo。

  在生成iql语句时,generate前面和后面的iql语句给予保留,充分保留最大的灵活性。

  在生成iql语句时候后,在调用insert和update时,转入的parametarObject必须是parametermap规定的Object,在select和delete时,如果parameter只有1个,则会把iql变量替换成#value#。

 sql-map 代码

  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->
  3.     "http://ibatis.apache.org/dtd/sql-map-2.dtd">  
  4.   
  5. <sqlMap namespace="sort">  
  6.   <typeAlias alias="Sort" type="com.cpcw.product.domain.Sort"/>  
  7.   
  8.   <parameterMap id="SortParameterMap" class="Sort">  
  9.     <parameter property="name" column="name" jdbcType="VC"/>  
  10.     <parameter property="fid" column="fid" jdbcType="INTEGER"/>  
  11.     <parameter property="status" column="status" jdbcType="INTEGER"/>  
  12.     <parameter property="notes" column="notes" jdbcType="VC"/>  
  13.     <parameter property="created" column="created" jdbcType="TIMESTAMP"/>  
  14.   parameterMap>  
  15.   
  16.   <parameterMap id="SortParameterFulMap" class="Sort" extends="SortParameterMap">  
  17.     <parameter property="id" column="id" jdbcType="INTEGER"/>  
  18.   
  19.   parameterMap>  
  20.   
  21.   <parameterMap id="SortParameterDeleteMap" class="Sort">  
  22.     <parameter property="id" column="id"/>  
  23.   parameterMap>  
  24.   
  25.   <select id="selectSort" parameterMap="sort.SortParameterFulMap" resultClass="Sort">  
  26.     select * from (   
  27.     <generate table="sort" where="id"/>  
  28.     ) a order by id desc limit 1   
  29.   select>  
  30.   
  31.   <insert id="createSort" parameterMap="sort.SortParameterMap">  
  32.     <selectKey keyProperty="id" resultClass="int" type="post">  
  33.       select last_insert_id() as value   
  34.     selectKey>  
  35.     <generate table="sort"/>  
  36.   insert>  
  37.   <update id="updateSort" parameterMap="sort.SortParameterFulMap">  
  38.     <generate where="id" table="sort" excludes="{status,created}"/>  
  39.   update>  
  40.   
  41.   <delete id="deleteSort" parameterMap="sort.SortParameterDeleteMap">  
  42.     <generate table="sort" where="id"/>  
  43.   delete>  
  44.   
  45.   
  46. sqlMap>  

 

java 代码
  1. public Sort getSortById(int id) {   
  2.   return (Sort) queryForObject("sort.selectSort"new Integer(id));   
  3. }   
  4.   
  5. public int createSort(Sort sort) {   
  6.   insert("sort.createSort", sort);   
  7.   return sort.getId();   
  8. }   
  9.   
  10. public int updateSort(Sort sort) {   
  11.   return update("sort.updateSort", sort);   
  12. }   
  13.   
  14. public int deleteSort(int id) {   
  15.   return delete("sort.deleteSort"new Integer(id));   
  16. }  

 

生成的IQL 代码
  1.   select:
  2.   select * from (   
  3.     select name as name, fid as fid, status as status, notes as notes, created as created, id as id from sort where id = #value#   
  4.     ) a order by id desc limit 1   
  5.      
  6. inesrt:       
  7.     insert into sort (name, fid, status, notes, created) values (#name:VC#, #fid:INTEGER#, #status:INTEGER#, #notes:VC#, #created:TIMESTAMP#)   
  8.      
  9. update:
  10.     update sort set name = #name:VC#, fid = #fid:INTEGER#, notes = #notes:VC#, id = #id:INTEGERwhere id = #id:INTEGER#   
  11. delete
  12.     delete from sort where id = #value#  

 原创文章,如果要转载请注明出处、原始地址和作者信息。 

分享到:
评论
2 楼 bukebushuo 2007-12-20  
想法和创意不错!
1 楼 abx01 2007-12-10  
支持,强捍的试验田

相关推荐

    mybatis自动sql生成插件源码

    本项目提供的"mybatis自动sql生成插件源码"则进一步提升了开发效率,通过拦截器(Interceptor)在运行时自动生成SQL语句,适用于具有主键或唯一索引的单表操作。 首先,`AutoMapperInterceptor.java`是这个插件的...

    sqlserver Ibatis XML自动生成工具

    XML文件中的每个元素都将对应数据库表的字段,使你可以直接在代码中调用这些预定义的SQL语句。 XML映射文件的生成包括以下几个关键部分: 1. `select`标签:用于查询操作,通常包含`id`(唯一标识符)、`resultMap`...

    ibatis sqlserver代码自动生成

    首先,Ibatis允许我们定义SQL语句、存储过程和高级映射,将数据库访问逻辑与业务逻辑分离,使得代码更易于维护。然而,手工编写这些配置和映射文件可能会耗费大量时间。因此,代码自动生成工具应运而生,它们可以...

    根据MyBatis或iBatis的SQLMapper文件反向生成数据库表

    根据MyBatis或iBatis的SQLMapper文件解析生成数据库表,通常是指通过解析MyBatis或iBatis的SQLMapper文件中的SQL语句,然后根据这些SQL语句来生成对应的数据库表结构。这样的需求可能源于需要将已有的SQLMapper文件...

    ibatis SQL映射文件、DAO、model自动生成工具源码

    总的来说,这个Ibatis生成工具通过自动化的方式,减轻了开发过程中重复性的工作,使得开发者可以更专注于业务逻辑的实现。它的特点是生成的代码简洁,没有冗余的注释或其他不必要内容,同时配置过程简单明了。对于...

    iBatis的动态SQL语句

    iBatis框架中的动态SQL主要通过XML映射文件来实现,它允许在映射文件中使用各种标签来控制SQL语句的生成过程。这些标签包括但不限于`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;trim&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`...

    ibatis常用sql语句

    iBATIS通过`&lt;iterate&gt;`标签支持数组的遍历,将数组中的每个元素作为独立的值插入到SQL语句中。例如,`(" close=")" conjunction=","&gt;`这段代码会将`actionIds`数组中的每个元素以逗号分隔的形式插入到SQL语句中,...

    ibatis sql生成工具

    总结来说,Ibatis SQL生成工具是一款强大的开发辅助工具,它通过Web应用的方式提供多数据库支持,能够帮助开发者快速生成Ibatis所需的SQL语句和相关Java代码,提高开发效率,降低出错率,是现代企业级开发中的得力...

    ibatis自动生成工具

    使用Ibatis生成工具,我们可以方便地根据数据库表结构自动生成实体类。实体类中的每个属性都与数据库表的列相对应,且自动带有getter和setter方法。此外,实体类还可能包含一些与Ibatis映射相关的注解,如`@Table`, ...

    ibatis代码自动生成

    Ibatis作为轻量级的ORM(对象关系映射)框架,其核心功能是通过XML或注解的方式将Java对象与SQL语句进行映射,避免了直接编写大量的JDBC代码。这大大提高了开发效率,降低了出错的可能性,并且支持动态SQL,提供了...

    ibatis sql 语句的编写

    ibatis还支持动态SQL,允许根据不同的条件生成不同的SQL语句,这对于复杂的查询非常有用。 ##### 4.1 `if`标签 ```xml SELECT * FROM USERS != null"&gt; AND name = #{name} ``` 这里使用`&lt;if&gt;`标签来...

    mybatis/ibatis自动生成SQLMapper脚本

    通过自动生成SQLMapper脚本,开发者可以快速地构建数据访问层,减少手动编写SQL和映射文件的工作量,使项目更加规范且易于维护。这不仅提高了开发效率,也为团队协作提供了便利,确保代码的一致性和可读性。在实际...

    表自动生成ibatis工具

    2. **分析表结构**:连接成功后,工具会读取指定库中的表信息,包括表名、字段名、字段类型等,这是生成SQL语句的基础。 3. **生成Mapper接口**:基于表结构,工具会自动生成对应表的Mapper接口,包含CRUD(Create...

    ibatis代码自动生成代码程序

    【ibatis代码自动生成代码程序】是一个实用工具,旨在帮助开发者快速生成基于iBATIS框架的Java代码。iBATIS,作为一个数据访问层框架,它允许程序员将SQL语句与Java代码分离,提供了一种简单但强大的方式来处理...

    自动生成ibatis 实体类文件

    在Java开发中,MyBatis Generator(MBG)是一个强大的工具,它可以帮助开发者自动生成SQL映射文件、Java实体类以及对应的DAO接口。标题“自动生成iBatis 实体类文件”表明我们要讨论的是如何利用MBG来自动化创建与...

    08_ibatis教程_sql主键生成方式.zip

    Ibatis允许开发者直接编写SQL语句,将数据库操作与Java代码解耦,提供更灵活的数据访问控制。在主键生成方面,Ibatis提供了多种策略,以适应不同的数据库环境和业务需求。 1. **手工指定主键**:这是最基础的方式,...

    WAS上log4j日志不能输出(ibatis)sql语句解决办法[借鉴].pdf

    WAS 上 log4j 日志不能...解决 WAS 上 log4j 日志不能输出(ibatis)sql 语句的问题需要改变 WAS 的默认 LogFactory 实现类,使其使用 log4j 框架下的 LogFactory 实现类,并且需要正确配置 log4j.properties 文件。

    ibatis动态SQL标签用法

    iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的、独立的片段,然后根据不同的条件组合这些片段生成最终的SQL语句。这可以提高代码的可重用性和灵活性。 例如,在上面的代码中,我们定义了三个动态SQL片段...

Global site tag (gtag.js) - Google Analytics