問題描述:車輛車牌號碼的展示,杭州車牌電動車車牌前面都是杭州XXXXXXX,HBXXXXXXX,等等。現在客戶要求根據電動二輪車,電動三輪車,車牌重新命名。比如電動二輪車,車牌號統一以數字2開頭,組成純7位數字;電動三輪車,車牌號同意以數字3開頭,組成純7位數字。
解決方法:原數據庫表不動,重新建立一張數據庫表,用來存儲客戶需要的車牌號碼。通過字符串拼截取方法。
原來的車牌查詢結果如圖:
重新截取後結果,客戶期望看到的結果:
具體步驟如下:
第一步在數據庫中建立新的表
CREATE TABLE `cx_tracarnumber` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`carnumber` varchar(15) DEFAULT NULL,
`username` varchar(15) DEFAULT NULL,
`type` varchar(15) DEFAULT NULL,
`deviceid` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
有兩點需要注意的id 是主鍵,且id 是自增長的。
第二步:
@Controller
@RequestMapping(value="/admin")
public class TranslateCarnumberController {
/**
* 車輛基本信息
*/
@Autowired
Car_Service car_Service;
@Autowired
CxTracarnumberService cxTracarnumberService;
@RequestMapping(value="/car/Trans_CarNumber")
public void Trans_CarNumber(){
CxTracarnumber cxTracarnumber = new CxTracarnumber();
List<Car> tarList = car_Service.selectCarList();
for (int i = 0; i <tarList.size(); i++) {
// 車輛類型 含有 二 則爲 截取號碼爲 數字2 開頭使用
if (tarList.get(i).getType().indexOf("二") != -1) {
// System.out.println("車輛類型 含有 二 則爲 截取號碼爲 數字2 開頭使用");
String carnumber = "2"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);
String username = tarList.get(i).getUsername();
String type =tarList.get(i).getType();
String deviceid = tarList.get(i).getDeviceid();
String id = tarList.get(i).getId();
cxTracarnumber.setCarnumber(carnumber);
cxTracarnumber.setUsername(username);
cxTracarnumber.setType(type);
cxTracarnumber.setDeviceid(deviceid);
// cxTracarnumber.setId(id+"");
cxTracarnumberService.insertSelective(cxTracarnumber);
}else{
// 車輛類型 含有 三 則爲 截取號碼爲 數字3開頭使用
// System.out.println("車輛類型 含有 三 則爲 截取號碼爲 數字3開頭使用");
String carnumber = "3"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);
String username = tarList.get(i).getUsername();
String type =tarList.get(i).getType();
String deviceid = tarList.get(i).getDeviceid();
cxTracarnumber.setCarnumber(carnumber);
cxTracarnumber.setUsername(username);
cxTracarnumber.setType(type);
cxTracarnumber.setDeviceid(deviceid);
cxTracarnumberService.insertSelective(cxTracarnumber);
}
}
}
// 判斷一個字符串是否都爲數字
public boolean isDigit(String strNum) {
return strNum.matches("[0-9]{1,}");
}
}
注意:
這裏先進行車輛類型的判斷,如果車輛類型中包含二,則爲二輪車,車牌號以數字2開頭。同理則爲三輪車,車牌以數字3開頭。
這個是字符串的截取。通過for循環,先獲取車牌號,然後截取車牌號的後六位,則轉爲目標車牌號碼。
String carnumber = "2"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);
最後將結果插入到數據庫中。因爲ID是自增長,所以不需要設置id。創建數據庫表的時候,默認以1開始。
測試的時候執行該方法,可轉爲期望的結果。
《end》