在项目中,经常要动态生成各种编号,例如订单编号,客户编号。这些编号一般是系统默认生成的,一般是不能更改的,也不给用户操作的,那么现在我们生成一个客户编号。例如:KH2021071500001
首先,这个简单的客户编号的组成一般是前缀“KH”+ 获取的日期+一个流水号。生成的思路是:先去数据库查询出已有多少条数据,然后再以这个作为基础再加1,然后就可以作为下一个编号,然后再拼接上获取的时间日期,和流水号。如果你要复杂一点的或者更独一无二的,可以再加上获取时间戳。(这里是用IDEA编辑工具)
第一步,在Dao层查出数据库有多少原始数据,
private static final String ClientCountAll="SELECT COUNT(sys_client_management.id) FROM sys_client_management";
//查询客户的总条数
@Override
public int clientcountAll() {
int intR=0;
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
String strSql=ClientCountAll;
conn=JdbcUtils.getConnection();
ps=(strSql);
rs= ();
while (()){
intR=(1);
}
} catch (SQLException throwables) {
();
}finally {
JdbcUtils.close(conn,ps,rs);
}
return intR;
}
第二步,在Service层进行数据处理,生成客户编号
首先,写一个方法生成客户编号。
public String ClientId(){
//调用Dao查询用户条数
int count=this.clientDao.clientcountAll();
Date date = new Date();
int dbclientNumber=count;
int newclientNumber=dbclientNumber+1;
int Number=0;
String tris=String.valueOf(newclientNumber);
Number=()+1;
if (Number == 1) {
tris = "00000" + tris;
} else if (Number == 2) {
tris = "0000" + tris;
} else if (Number == 3) {
tris = "000" + tris;
} else if (Number == 4) {
tris = "00" + tris;
}else if (Number == 5) {
tris = "0" + tris;
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String number="KH"+dateFormat.format(date)+tris;
return number;
}
第三步,上面return回了一个编号,那么我们还要在Service层写一个实现类的方法
返回到Servlet层
/**
* 生成客户编号
* @return
*/
@Override
public String clientNumber() {
return this.ClientId();
}
第四步,那么我们就在Servlet层进行接收,并返回页面层,
/**
* 生成客户编号
*/
public void clientNumber(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//获取编号
String clientNumber=this.clientService.clientNumber();
returnJson(response,clientNumber);
}
第五步,我们在页面层(jsp)接收,然后调用就可以了
/**
* 请求客户编号的方法
*/
function number(){
//请求客户编号
var url="${ctx}/client?method=clientNumber";
$.post(url,{},function (data){
$("#clientNumber1").val(data);
})
}