业务中我们的订单号有几位是一个序列,每天的第一笔订单序列为1,以后每增加一个订单序列+1。每天需要清零。如果是Oracle就可以直接使用Sequence实现。在MySQL中,我们在数据库中设计一个表
表中只有一条记录,通过update_day判断同一天每次sequence+1,第二天的话就更新update_day。
代码实现:
String getOrderSeq() {
//OrderSeq orderSeq = OrderSeq.dao.findById(1);//根据id获取这个记录
OrderSeq orderSeq = OrderSeq.dao.findByType(0);//缴费订单的type=0
long seq = 1;//每天的第一个订单从1开始
Date date = orderSeq.getDate("update_day");
if(DateKit.isToday(date)){//还在今天
seq = orderSeq.getLong("sequence");
orderSeq.set("sequence", seq+1).update();//今天的话就不用更新update_day字段
}else{
orderSeq.set("sequence", seq+1).set("update_day", new Date()).update();//今天的话就不用更新update_day字段
}
return H5ApiConstant.Order.JIAOFEE_FORMAT.format(seq);
}
DateKit类中
public static String toStr(Date date, String format) {
SimpleDateFormat sdf = null;
if(null!=format&&!"".equals(format)){
sdf = new SimpleDateFormat(format);
return sdf.format(date);
}else{
sdf = new SimpleDateFormat(DateKit.dateFormat);
return sdf.format(date);
}
}
private static Date TODAY = new Date();
public static boolean isToday(Date date){
if(toStr(date).equals(toStr(TODAY))){//如果还是今天
return true;
}else{
DateKit.TODAY = new Date();//比较的基础改为今天,因为new Date()表示当前时间
return false;
}
}
使用MySQL存储过程在调用的时候就简单一些了,自己维护sequence和update_day字段。
BEGIN
#Routine body goes here...
#根据类型生成一个订单序列
DECLARE id int;
declare updateDay date;
select o.`id`,o.`sequence`,o.`update_day` into id,orderSeq,updateDay from `order_seq` o where o.`type`=orderType;
if TO_DAYS(updateDay) = TO_DAYS(SYSDATE()) then
/* 用@符号加变量名的方式定义一个变量,与declare类似 */
update order_seq set sequence=sequence+1 where id=id;
else
set orderSeq = 1;
update order_seq set sequence=2,update_day=SYSDATE() where id=id;
end if;
END
存储过程或者函数在copy的过程中,可能出现如下错误:
mysql 1449 : The user specified as a definer ('root'@'%') does not exist
2.改变安全策略
一些关于Mysql的操作
1)将MySQL 添加到服务中。 以管理员模式启动cmd,进入mysql安装路径: d:/appspace/mysql /bin> 输入 mysqld --install MySQL --defaults-file="C:\Windows\my.ini" 要指定defaults-file. 命令行中输入services.msc回车,可以看到MySQL已被添加到Services中, Path to executable中的内容为 d:\appspace\mysql\bin\mysqld --defaults-file=C:\windows\my.ini MySQL 2)启动MySQL 在MySQL Service中点击Start按钮,或者在命令行(Run as administrator)中输入 net start mysql. 如果出现1067错误,启动不了,则重新检查my.ini文件(前面有描述) 3)关闭MySQL 在MySQL Service中点击Stop按钮,或者在命令行(Run as administrator)中输入 net stop mysql. 4)删除mysql服务 mysqld –removemysql修改密码
对于绿色版的mysql,虽然root用户是默认存在的,但是没有密码,可以通过以下方式修改
命令行下进入mysql的安装目录\bin,输入mysqladmin -u用户名 -p旧密码 password 新密码进行修改。
mysql之间的数据导入导出的时候注意版本之间的区别,5.6.12的数据导入5.5.36不能成功,但是导入5.6.17成功,也基本符合向前兼容性原则。
navicat连接mysql应该是通过网络的方式
访问其他电脑的共享文件使用\\IP地址,要求共享电脑和本电脑在同一个网段,并且有共享的东西。