一個NoCtrl類的實現
·
·import java
·import com
·import com
·import java
·
·/**
· * <p>Title: 編號控制檔</p>
· * <p>Description: </p>
· * <p>Copyright: Copyright (c)
· * <p>Company: Liming Network System</p>
· * @author Yao Kui
· * @version
· */
·
·public class NoCtrl {
· /**
· * 調試模式
· *
· */
· public static int DebugMode =
·
· public static String CURR_DATE =
· public NoCtrl() {
· }
· /**
· * @deprecated
· * @see currNO
· * @param tableCode
· * @param columnCode
· * @return
· */
· public static String currNo(String tableCode
· Connection con = null;
· Statement stmt = null;
· DBManager dbMgr = new DBManager();
·
· try{
· String sqlStr =
·
· String where =
· if(columnCode != null) where +=
· sqlStr += where;
· AppTools
·
· if (DebugMode==
· con = dbMgr
· }
· else {
· con = dbMgr
· }
· stmt = con
·
· ResultSet rst = stmt
· if(rst
· String prefix = coverFixString(rst
· String postfix = coverFixString(rst
· int currNo = rst
· int numLen = rst
· stmt
· return prefix+lpad(Integer
· }else{
· return null;
· }
· }
· catch(SQLException se) {
· AppTools
· AppTools
· return null;
· }
· catch(Exception e) {
· AppTools
· AppTools
· return null;
· }
· finally
· {
· dbMgr
· }
· }
· private static String coverFixString(String fix){
· if(fix == null) return
· java
· long date = System
· String datestr = df
·
·
· /*if(CURR_DATE
· java
· long date = System
· return df
· }*/
· return fix
· }
· //將字符串左補串到一定長度
· private static String lpad(String src
· if(src
· int padLen = len
· int padTimes = padLenpad
· StringBuffer sb = new StringBuffer();
· for(int i=
· sb
· }
· return sb
· }
· public static void main(String args){
· System
·
· System
· System
· System
·
· System
· System
· }
·
· /*上面的currNo方法對於業務邏輯後面報錯的情況
· 下面是將取號與更新分開
· 只是表示
· */
· public static String currNO(String tableCode
· return currNO(tableCode
· }
·
· /**
· *更新序號
· * 作為條件
· * @param tableCode
· * @param columnCode
· * @param currNum
· * @return
· */
· public static String updateNOSql(String tableCode
· return updateNOSql(tableCode
· }
·
· /*對於上面的取與更新在一個事務中進行
· 對於如果後台要進行插入(多條)
· for(){
· insert(no
· }
· 由於在一個事務中
· 所以最好使用加鎖(for update)讀出第一個號
· var no = 加鎖讀出第一個號
· for(i=
· insert(no+i
· }
· update(curr_no=curr_no+xxx)
· */
· public static String currNO(String tableCode
· Connection con = null;
· Statement stmt = null;
· DBManager dbMgr = new DBManager();
· String rt = new String
· try{
· String sqlStr =
·
· String where =
· if(columnCode != null) where +=
· sqlStr += where;
· if(lock) sqlStr +=
· AppTools
·
· if (DebugMode==
· con = dbMgr
· }
· else {
· con = dbMgr
· }
· stmt = con
·
· ResultSet rst = stmt
· if(rst
· String prefix = coverFixString(rst
· String postfix = coverFixString(rst
· int currNo = rst
· int numLen = rst
· //stmt
· rt
· rt
· }
· return rt;
· }
· catch(SQLException se) {
· AppTools
· AppTools
· return null;
· }
· catch(Exception e) {
· AppTools
· AppTools
· return null;
· }
· finally
· {
· dbMgr
· }
· }
· /**
· * 返回更新NO_CTRL的語句
· * @param tableCod
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25532.html