您好,登錄后才能下訂單哦!
問題:在項目中,當保存數據超過數據庫字段列長度限制時,如何解決?
一種常見的解決辦法是:截串存取。顧名思義,就是對大文本數據按指定長度進行截取,返回結果集依截取順序存儲在新表中。并通過在新表中創建一個type字段來標識新表中截取的內容對應舊表中的字段名,而舊表中相應的字段不再直接存放大文本數據,而是存放標識符。
這里,提供一種工具類,用來分割文本字符串,返回List結果集供下一步使用。
public class StringUtil { /** * @Name: getContentByList * @Description: 字符串切割 * @Author: 張(作者) * @Version: V1.00 (版本號) * @Create Date: 2017-6-26(創建日期) * @Parameters: wholecontent:傳遞的文本字符串; cutcount:切割字符串的長度 * @Return: List:切割字符串形成的集合,存放結果集 */ public static List<String> getContentByList(String wholecontent,int cutcount){ List<String> list = new ArrayList<String>(); //獲取完整內容字符串的總長度 int contentlen = wholecontent.length(); //內容截取,用內容總長和截取長度進行比較,無須截取的話直接插入 if (contentlen < cutcount){ list.add(wholecontent); } //內容長度超過截取長度 else{ //定義并初始化內容段落 String contentpart =""; //定義并初始化被截取的段落數量 int contentround =0; //開始截取的位置 int begincount = 0; //判斷截取的段落數 int contentcutpart = contentlen/cutcount; int contentcutparts = contentlen%cutcount; //求余數 //若余數為0,說明被整除,內容的長度正好是截取長度的倍數。 if (contentcutparts==0){ contentround = contentcutpart; } else{ contentround = contentcutpart+1; } //循環截取內容 for (int i = 1; i <= contentround; i++) { //如果不是最后一個截取部分 if (i != contentround){ //按照截斷長度截取內容 contentpart = wholecontent.substring(begincount, cutcount*i); } else{ //截取最后一部分內容 contentpart = wholecontent.substring(begincount, contentlen); } //賦值下一截取部分的起點位置 begincount = cutcount*i; list.add(contentpart); } } return list; } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。