1.在oracle中有sequence(序列),可用来实现自动生成主键,在mysql中没有,可以这样来实现
在程序中定义一个变量i,变量为全局变量,
- public class AddServlet extends HttpServlet
- {
- int i=0;
- int n;
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException
- {
- this.doPost(req, resp);
- }
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException
- {
- boolean isSuccess=true;
- n=++i;
- System.out.println("插入主键="+i);
- String userId=n+"";
- //1.获得表单中的数据
- String username=req.getParameter("username");
- String password=req.getParameter("password");
- String idcard=req.getParameter("idcard");
- String telnum=req.getParameter("telnum");
- System.out.println("username="+username+password+idcard+telnum);
在向业务逻辑层传值的时候记得每次进行自动的修改,利用++i实现,每次把它赋值给n用作主键,不能用i++,因为获取修改后的值的顺序不同,所以必须用++i来实现主键的自己变化
注意:在重启服务器时,会导致设置的初值从设置的值开始,为防止这个情况,可以在进行插入操作之前进行一次查询,查询出当前作为主键中的那一列值中最大的值是多少,然后使这个值加1,就可以避免重启服务器时造成的这个错误了。