首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

IBatisHelper 開源專案:原始碼下載與 SQLMap 模板最佳實踐

     編輯:關於.NET

專案背景

IBatisHelper 是一個輔助 iBATIS.NET 開發的工具庫,自發布以來獲得許多開發者關注。因應需求增長,作者決定將原始碼公開釋出,方便社群自行下載、擴充與維護。

原始碼獲取

下載連結: IBatisHelper_src.rar

作者坦承程式碼風格略顯生硬,歡迎有興趣的開發者重構優化,並回饋改進版本。

實戰 SQLMap 模板(Velocity 語法)

以下為專案實際採用的完整 sqlMap 模板,涵蓋 CRUD、分頁與動態欄位生成,可直接套用或依專案需求微調:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"https://java.plugbase.org/dtd/sql-map-2.dtd">

<sqlMap namespace="${table}">
<typeAlias alias="${table}" type="${package}.${table}"/>
<typeAlias alias="SQLPager" type="org.plugbase.sql.SQLPager"/>
<resultMap id="${table}resultMap" class="${table}">
#foreach($item in $list)
<result property="${item.name.ToLower()}" column="${item.name.ToLower()}"/>
#end
</resultMap>

<select id="Count${table}" resultClass="int">
select count(*) from ${table}
</select>

<select id="Select${table}ById" parameterClass="int" resultMap="${table}resultMap">
select * from ${table} where id=#value#
</select>

<insert id="Insert${table}" parameterClass = "${table}">
insert into ${table}
(
#foreach($item in $list)
#if(${item.name.ToLower()}!="id")
#if($velocityCount==$list.Count())
${item.name.ToLower()}
#else
${item.name.ToLower()},
#end
#end
#end
)
values
(
#foreach($item in $list)
#if(${item.name.ToLower()}!="id")
#if($velocityCount==$list.Count())
#${item.name.ToLower()}#
#else
#${item.name.ToLower()}#,
#end
#end
#end
)
</insert>

<update id="Update${table}" parameterClass = "${table}">
update ${table}
#foreach($item in $list)
#if($velocityCount==1)
set
#end
#if(${item.name.ToLower()}!="id")
#if($velocityCount==$list.Count())
${item.name.ToLower()}=#${item.name.ToLower()}#
#else
${item.name.ToLower()}=#${item.name.ToLower()}#,
#end
#end
#end
where id=#value#
</update>

<delete id="Delete${table}ById" parameterClass="int">
delete from ${table} where id=#value#
</delete>

</sqlMap>

模板亮點解析

  • 動態欄位綁定:透過 #foreach 迴圈自動展開實體屬性,排除主鍵 id。
  • 智慧逗號處理:利用 $velocityCount 判斷最後一欄位,避免 SQL 語法錯誤。
  • 命名慣例統一:自動轉小寫屬性/欄位名,符合 Java/.NET 命名規範。
  • 內建分頁支援:整合 SQLPager,快速實現分頁查詢。

使用建議

  1. 下載原始碼後,依專案套件結構調整 ${package} 變數。
  2. 若資料庫欄位命名非小寫,請移除 .ToLower() 呼叫。
  3. 擴充模板時,建議保留 resultMap 明確映射,避免自動映射效能損耗。

結語

IBatisHelper 雖非大型框架,但其模板化思想極大提升了 iBATIS 開發效率。開源共享,期待社群共同打造更好用的版本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved