改造iBatis,使其支持自动生成sql语句(2)
上篇讲到基本思路和代码修改的切入点。这篇继续讲实现的细节的demo。
在生成iql语句时,generate前面和后面的iql语句给予保留,充分保留最大的灵活性。
在生成iql语句时候后,在调用insert和update时,转入的parametarObject必须是parametermap规定的Object,在select和delete时,如果parameter只有1个,则会把iql变量替换成#value#。
sql-map 代码
- <!---->xml version="1.0" encoding="UTF-8"?>
- <!---->
- "http://ibatis.apache.org/dtd/sql-map-2.dtd">
-
- <sqlMap namespace="sort">
- <typeAlias alias="Sort" type="com.cpcw.product.domain.Sort"/>
-
- <parameterMap id="SortParameterMap" class="Sort">
- <parameter property="name" column="name" jdbcType="VC"/>
- <parameter property="fid" column="fid" jdbcType="INTEGER"/>
- <parameter property="status" column="status" jdbcType="INTEGER"/>
- <parameter property="notes" column="notes" jdbcType="VC"/>
- <parameter property="created" column="created" jdbcType="TIMESTAMP"/>
- parameterMap>
-
- <parameterMap id="SortParameterFulMap" class="Sort" extends="SortParameterMap">
- <parameter property="id" column="id" jdbcType="INTEGER"/>
-
- parameterMap>
-
- <parameterMap id="SortParameterDeleteMap" class="Sort">
- <parameter property="id" column="id"/>
- parameterMap>
-
- <select id="selectSort" parameterMap="sort.SortParameterFulMap" resultClass="Sort">
- select * from (
- <generate table="sort" where="id"/>
- ) a order by id desc limit 1
- select>
-
- <insert id="createSort" parameterMap="sort.SortParameterMap">
- <selectKey keyProperty="id" resultClass="int" type="post">
- select last_insert_id() as value
- selectKey>
- <generate table="sort"/>
- insert>
- <update id="updateSort" parameterMap="sort.SortParameterFulMap">
- <generate where="id" table="sort" excludes="{status,created}"/>
- update>
-
- <delete id="deleteSort" parameterMap="sort.SortParameterDeleteMap">
- <generate table="sort" where="id"/>
- delete>
-
-
- sqlMap>
java 代码
- public Sort getSortById(int id) {
- return (Sort) queryForObject("sort.selectSort", new Integer(id));
- }
-
- public int createSort(Sort sort) {
- insert("sort.createSort", sort);
- return sort.getId();
- }
-
- public int updateSort(Sort sort) {
- return update("sort.updateSort", sort);
- }
-
- public int deleteSort(int id) {
- return delete("sort.deleteSort", new Integer(id));
- }
生成的IQL 代码
- select:
- select * from (
- select name as name, fid as fid, status as status, notes as notes, created as created, id as id from sort where id = #value#
- ) a order by id desc limit 1
-
- inesrt:
- insert into sort (name, fid, status, notes, created) values (#name:VC#, #fid:INTEGER#, #status:INTEGER#, #notes:VC#, #created:TIMESTAMP#)
-
- update:
- update sort set name = #name:VC#, fid = #fid:INTEGER#, notes = #notes:VC#, id = #id:INTEGER# where id = #id:INTEGER#
- delete
- delete from sort where id = #value#
原创文章,如果要转载请注明出处、原始地址和作者信息。
分享到:
相关推荐
本项目提供的"mybatis自动sql生成插件源码"则进一步提升了开发效率,通过拦截器(Interceptor)在运行时自动生成SQL语句,适用于具有主键或唯一索引的单表操作。 首先,`AutoMapperInterceptor.java`是这个插件的...
XML文件中的每个元素都将对应数据库表的字段,使你可以直接在代码中调用这些预定义的SQL语句。 XML映射文件的生成包括以下几个关键部分: 1. `select`标签:用于查询操作,通常包含`id`(唯一标识符)、`resultMap`...
首先,Ibatis允许我们定义SQL语句、存储过程和高级映射,将数据库访问逻辑与业务逻辑分离,使得代码更易于维护。然而,手工编写这些配置和映射文件可能会耗费大量时间。因此,代码自动生成工具应运而生,它们可以...
根据MyBatis或iBatis的SQLMapper文件解析生成数据库表,通常是指通过解析MyBatis或iBatis的SQLMapper文件中的SQL语句,然后根据这些SQL语句来生成对应的数据库表结构。这样的需求可能源于需要将已有的SQLMapper文件...
总的来说,这个Ibatis生成工具通过自动化的方式,减轻了开发过程中重复性的工作,使得开发者可以更专注于业务逻辑的实现。它的特点是生成的代码简洁,没有冗余的注释或其他不必要内容,同时配置过程简单明了。对于...
iBatis框架中的动态SQL主要通过XML映射文件来实现,它允许在映射文件中使用各种标签来控制SQL语句的生成过程。这些标签包括但不限于`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<trim>`、`<where>`、`<set>`、`...
iBATIS通过`<iterate>`标签支持数组的遍历,将数组中的每个元素作为独立的值插入到SQL语句中。例如,`(" close=")" conjunction=",">`这段代码会将`actionIds`数组中的每个元素以逗号分隔的形式插入到SQL语句中,...
总结来说,Ibatis SQL生成工具是一款强大的开发辅助工具,它通过Web应用的方式提供多数据库支持,能够帮助开发者快速生成Ibatis所需的SQL语句和相关Java代码,提高开发效率,降低出错率,是现代企业级开发中的得力...
使用Ibatis生成工具,我们可以方便地根据数据库表结构自动生成实体类。实体类中的每个属性都与数据库表的列相对应,且自动带有getter和setter方法。此外,实体类还可能包含一些与Ibatis映射相关的注解,如`@Table`, ...
Ibatis作为轻量级的ORM(对象关系映射)框架,其核心功能是通过XML或注解的方式将Java对象与SQL语句进行映射,避免了直接编写大量的JDBC代码。这大大提高了开发效率,降低了出错的可能性,并且支持动态SQL,提供了...
ibatis还支持动态SQL,允许根据不同的条件生成不同的SQL语句,这对于复杂的查询非常有用。 ##### 4.1 `if`标签 ```xml SELECT * FROM USERS != null"> AND name = #{name} ``` 这里使用`<if>`标签来...
通过自动生成SQLMapper脚本,开发者可以快速地构建数据访问层,减少手动编写SQL和映射文件的工作量,使项目更加规范且易于维护。这不仅提高了开发效率,也为团队协作提供了便利,确保代码的一致性和可读性。在实际...
2. **分析表结构**:连接成功后,工具会读取指定库中的表信息,包括表名、字段名、字段类型等,这是生成SQL语句的基础。 3. **生成Mapper接口**:基于表结构,工具会自动生成对应表的Mapper接口,包含CRUD(Create...
【ibatis代码自动生成代码程序】是一个实用工具,旨在帮助开发者快速生成基于iBATIS框架的Java代码。iBATIS,作为一个数据访问层框架,它允许程序员将SQL语句与Java代码分离,提供了一种简单但强大的方式来处理...
在Java开发中,MyBatis Generator(MBG)是一个强大的工具,它可以帮助开发者自动生成SQL映射文件、Java实体类以及对应的DAO接口。标题“自动生成iBatis 实体类文件”表明我们要讨论的是如何利用MBG来自动化创建与...
Ibatis允许开发者直接编写SQL语句,将数据库操作与Java代码解耦,提供更灵活的数据访问控制。在主键生成方面,Ibatis提供了多种策略,以适应不同的数据库环境和业务需求。 1. **手工指定主键**:这是最基础的方式,...
WAS 上 log4j 日志不能...解决 WAS 上 log4j 日志不能输出(ibatis)sql 语句的问题需要改变 WAS 的默认 LogFactory 实现类,使其使用 log4j 框架下的 LogFactory 实现类,并且需要正确配置 log4j.properties 文件。
iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的、独立的片段,然后根据不同的条件组合这些片段生成最终的SQL语句。这可以提高代码的可重用性和灵活性。 例如,在上面的代码中,我们定义了三个动态SQL片段...