数据更新不了

数据更新不了

http://img1.sycdn.imooc.com//climg/5b027c1a0001fded15580592.jpg

http://img1.sycdn.imooc.com//climg/5b027c1a0001a25e19201030.jpg

92875 INFO  [http-nio-8080-exec-12] com.damu.servlet.UsersFindByIdServlet     - 获取到查询参数id--》6
92875 DEBUG [http-nio-8080-exec-12] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Opening JDBC Connection
92875 DEBUG [http-nio-8080-exec-12] org.apache.ibatis.datasource.pooled.PooledDataSource     - Checked out connection 846707034 from pool.
92875 DEBUG [http-nio-8080-exec-12] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
92875 DEBUG [http-nio-8080-exec-12]       com.damu.entity.Users.findUsers     - ==>  Preparing: select * from users where id=? 
92875 DEBUG [http-nio-8080-exec-12]       com.damu.entity.Users.findUsers     - ==> Parameters: 6(Integer)
92883 DEBUG [http-nio-8080-exec-12]       com.damu.entity.Users.findUsers     - <==      Total: 1
92883 DEBUG [http-nio-8080-exec-12] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
92883 DEBUG [http-nio-8080-exec-12] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
92883 DEBUG [http-nio-8080-exec-12] org.apache.ibatis.datasource.pooled.PooledDataSource     - Returned connection 846707034 to pool.
92883 INFO  [http-nio-8080-exec-12] com.damu.servlet.UsersFindByIdServlet     - 查询数完成,查询到的数据:Users{id=6, username='imooc1', userpass='2121', nickname='summer_eye', age=12121, gender='12121', phone='121212', email='337806034@qq.com', createTime=Sat May 19 18:08:14 CST 2018, updateTime=Sat May 19 18:08:14 CST 2018, lastLogin=Sat May 19 18:08:14 CST 2018, userStatus=0, remark='null'}
org.apache.ibatis.exceptions.PersistenceException: 
113051 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Opening JDBC Connection
### Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'phone' at row 1
### The error may involve defaultParameterMap
113051 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.datasource.pooled.PooledDataSource     - Checked out connection 846707034 from pool.
113051 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
113051 DEBUG [http-nio-8080-exec-13]      com.damu.entity.Users.updateUser     - ==>  Preparing: update users SET nickname = ?, age = ?, gender = ?, email = ?, phone = ?, updateTime = ?, remark = ? where id = ? 
### The error occurred while setting parameters
113051 DEBUG [http-nio-8080-exec-13]      com.damu.entity.Users.updateUser     - ==> Parameters: summer_eye(String), 11(Integer), 222(String), 333(String), 337806034@qq.com(String), 2018-05-21 15:56:52.905(Timestamp), 大木木(String), 6(Integer)
113059 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Rolling back JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
### SQL: update users          SET nickname = ?,             age = ?,             gender = ?,             email = ?,             phone = ?,                          updateTime = ?,                                       remark = ?          where id = ?
113059 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'phone' at row 1
113059 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
113059 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.datasource.pooled.PooledDataSource     - Returned connection 846707034 to pool.
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200)
    at com.damu.dao.UserDAO.updateUsers(UserDAO.java:72)
    at com.damu.servlet.UsersUpdateServlet.doPost(UsersUpdateServlet.java:35)
    at com.damu.servlet.UsersUpdateServlet.doGet(UsersUpdateServlet.java:19)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
113067 INFO  [http-nio-8080-exec-14] com.damu.servlet.UsersFindByIdServlet     - 获取到查询参数id--》6
113067 DEBUG [http-nio-8080-exec-14] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Opening JDBC Connection
113067 DEBUG [http-nio-8080-exec-14] org.apache.ibatis.datasource.pooled.PooledDataSource     - Checked out connection 846707034 from pool.
113067 DEBUG [http-nio-8080-exec-14] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
113067 DEBUG [http-nio-8080-exec-14]       com.damu.entity.Users.findUsers     - ==>  Preparing: select * from users where id=? 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
113067 DEBUG [http-nio-8080-exec-14]       com.damu.entity.Users.findUsers     - ==> Parameters: 6(Integer)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
113067 DEBUG [http-nio-8080-exec-14]       com.damu.entity.Users.findUsers     - <==      Total: 1
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
113067 DEBUG [http-nio-8080-exec-14] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
113067 DEBUG [http-nio-8080-exec-14] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
113067 DEBUG [http-nio-8080-exec-14] org.apache.ibatis.datasource.pooled.PooledDataSource     - Returned connection 846707034 to pool.
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
113067 INFO  [http-nio-8080-exec-14] com.damu.servlet.UsersFindByIdServlet     - 查询数完成,查询到的数据:Users{id=6, username='imooc1', userpass='2121', nickname='summer_eye', age=12121, gender='12121', phone='121212', email='337806034@qq.com', createTime=Sat May 19 18:08:14 CST 2018, updateTime=Sat May 19 18:08:14 CST 2018, lastLogin=Sat May 19 18:08:14 CST 2018, userStatus=0, remark='null'}
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1354)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'phone' at row 1
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:960)
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:388)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
    at com.sun.proxy.$Proxy7.execute(Unknown Source)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:46)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
    at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
    at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
    at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)
    ... 27 more
134753 INFO  [http-nio-8080-exec-8] com.damu.servlet.UsersFindByIdServlet     - 获取到查询参数id--》1
134753 DEBUG [http-nio-8080-exec-8] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Opening JDBC Connection
134753 DEBUG [http-nio-8080-exec-8] org.apache.ibatis.datasource.pooled.PooledDataSource     - Checked out connection 846707034 from pool.
134753 DEBUG [http-nio-8080-exec-8] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
134753 DEBUG [http-nio-8080-exec-8]       com.damu.entity.Users.findUsers     - ==>  Preparing: select * from users where id=? 
134753 DEBUG [http-nio-8080-exec-8]       com.damu.entity.Users.findUsers     - ==> Parameters: 1(Integer)
134753 DEBUG [http-nio-8080-exec-8]       com.damu.entity.Users.findUsers     - <==      Total: 1
134753 DEBUG [http-nio-8080-exec-8] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
134753 DEBUG [http-nio-8080-exec-8] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
134753 DEBUG [http-nio-8080-exec-8] org.apache.ibatis.datasource.pooled.PooledDataSource     - Returned connection 846707034 to pool.
134761 INFO  [http-nio-8080-exec-8] com.damu.servlet.UsersFindByIdServlet     - 查询数完成,查询到的数据:Users{id=1, username='damu', userpass='damu', nickname='大慕', age=null, gender='null', phone='null', email='null', createTime=Tue May 16 00:00:00 CST 2017, updateTime=null, lastLogin=null, userStatus=0, remark='null'}
171626 DEBUG [http-nio-8080-exec-17] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Opening JDBC Connection
171626 DEBUG [http-nio-8080-exec-17] org.apache.ibatis.datasource.pooled.PooledDataSource     - Checked out connection 846707034 from pool.
171626 DEBUG [http-nio-8080-exec-17] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
171634 DEBUG [http-nio-8080-exec-17]      com.damu.entity.Users.updateUser     - ==>  Preparing: update users SET nickname = ?, age = ?, gender = ?, email = ?, phone = ?, updateTime = ?, remark = ? where id = ? 
171634 DEBUG [http-nio-8080-exec-17]      com.damu.entity.Users.updateUser     - ==> Parameters: 大慕(String), 21(Integer), 男(String), 123456(String), 123@123.com(String), 2018-05-21 15:57:51.48(Timestamp), 大木木(String), 1(Integer)
171642 DEBUG [http-nio-8080-exec-17]      com.damu.entity.Users.updateUser     - <==    Updates: 1
171642 DEBUG [http-nio-8080-exec-17] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Committing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
171706 DEBUG [http-nio-8080-exec-17] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
171706 DEBUG [http-nio-8080-exec-17] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
171706 DEBUG [http-nio-8080-exec-17] org.apache.ibatis.datasource.pooled.PooledDataSource     - Returned connection 846707034 to pool.
171714 INFO  [http-nio-8080-exec-13] com.damu.servlet.UsersFindByIdServlet     - 获取到查询参数id--》1
171714 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Opening JDBC Connection
171714 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.datasource.pooled.PooledDataSource     - Checked out connection 846707034 from pool.
171714 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
171714 DEBUG [http-nio-8080-exec-13]       com.damu.entity.Users.findUsers     - ==>  Preparing: select * from users where id=? 
171714 DEBUG [http-nio-8080-exec-13]       com.damu.entity.Users.findUsers     - ==> Parameters: 1(Integer)
171722 DEBUG [http-nio-8080-exec-13]       com.damu.entity.Users.findUsers     - <==      Total: 1
171722 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
171722 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.transaction.jdbc.JdbcTransaction     - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3277b95a]
171722 DEBUG [http-nio-8080-exec-13] org.apache.ibatis.datasource.pooled.PooledDataSource     - Returned connection 846707034 to pool.
171722 INFO  [http-nio-8080-exec-13] com.damu.servlet.UsersFindByIdServlet     - 查询数完成,查询到的数据:Users{id=1, username='damu', userpass='damu', nickname='大慕', age=21, gender='男', phone='123@123.com', email='123456', createTime=Tue May 16 00:00:00 CST 2017, updateTime=Mon May 21 15:57:51 CST 2018, lastLogin=null, userStatus=0, remark='大木木'}

UsersUpdateServlet

package com.damu.servlet;

import com.damu.dao.UserDAO;
import com.damu.entity.Users;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

@WebServlet("/updateusers")
public class UsersUpdateServlet extends HttpServlet {
    UserDAO userDAO=new UserDAO();
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取用户要更新的数据
        String id=req.getParameter("id");
        String nickname=req.getParameter("nickname");
        String age=req.getParameter("age");
        String gender=req.getParameter("gender");
        String email=req.getParameter("email");
        String phone=req.getParameter("phone");
        String remark=req.getParameter("remark");
        //创建用户对象
        Users user=new Users(Integer.parseInt(id),nickname,Integer.parseInt(age),gender,email,phone,new Date(),remark);
        //提交更新
        userDAO.updateUsers(user);
        //提交更新后的用户数据
        resp.sendRedirect("/detail?id="+user.getId());
    }
}

UserDAO

/**
 * 增加一个新用户数据到数据库的方法
 */
public Users updateUsers(Users user) {
    try {
        //返回值:是insert执行过程中影响的行数
        getSession().update("updateUser",user);

        sqlSession.commit();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        sqlSession.close();
    }
    return user;
}

UsersFindByIdServlet

package com.damu.servlet;

import com.damu.dao.UserDAO;
import com.damu.entity.Users;
import org.apache.log4j.Logger;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/detail")
public class UsersFindByIdServlet extends HttpServlet {

    /**
     * 创建对应的日志记录对象
     * 通过不同的级别进行日志的记录【DEBUG\WARM\INFO\LOG】
     */
    private Logger log=Logger.getLogger(UsersFindByIdServlet.class);

    private UserDAO userDAO = new UserDAO();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String id = req.getParameter("id");

        log.info("获取到查询参数id--》"+id);

        Users users = userDAO.findById(Integer.parseInt(id));

        log.info("查询数完成,查询到的数据:"+users);
        req.setAttribute("user", users);
        req.getRequestDispatcher("detail.jsp").forward(req, resp);
    }
}

Users

package com.damu.entity;

import java.util.Date;

/**
 * Created by mouwe on 2017/5/17.
 * resource:mybatis-config.xml
 * InputStream
 * SqlSessionFactory
 * SqlSession
 * 执行我们的配置好的SQL语句
 */
public class Users {

    private Integer id;                 // 用户编号
    //    private String username;            // 登录账号
    private String name;                //登陆账号
    private String userpass;            // 登录密码
    private String nickname;            // 用户昵称
    private Integer age;                // 用户年龄
    private String gender;              // 用户性别
    private String phone;               // 联系方式
    private String email;               // 用户邮箱
    private Date createTime;            // 创建时间
    private Date updateTime;            // 账号最后修改时间
    private Date lastLogin;             // 用户最后登录时间
    private Integer userStatus;         // 用户账号状态 0 正常 1 锁定 2 删除
    private String remark;              // 用户备注信息

    public Users() {
    }

    public Users(Integer id) {
        this.id = id;
    }

    public Users(Integer id, String nickname, Integer age, String gender, String phone, String email, Date updateTime, String remark) {
        this.id = id;
        this.nickname = nickname;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
        this.email = email;
        this.updateTime = updateTime;
        this.remark = remark;
    }

    public Users(Integer id, String name, String userpass, String nickname, Integer age, String gender, String phone, String email, Date createTime, Date updateTime, Date lastLogin, String remark, Integer userStatus) {
        this.id = id;
//        this.username = username;
        this.name = name;
        this.userpass = userpass;
        this.nickname = nickname;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
        this.email = email;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.lastLogin = lastLogin;
        this.userStatus = userStatus;
        this.remark = remark;
    }

    public Users(String name, String userpass, String nickname, Integer age, String gender, String email, String phone, Date createTime, Date updateTime, Date lastLogin, Integer userStatus) {
        this.name = name;
        this.userpass = userpass;
        this.nickname = nickname;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
        this.email = email;
        this.userStatus = userStatus;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.lastLogin = lastLogin;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

//    public String getUsername() {
////        return username;
////    }
////
////    public void setUsername(String username) {
////        this.username = username;
////    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUserpass() {
        return userpass;
    }

    public void setUserpass(String userpass) {
        this.userpass = userpass;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Date getLastLogin() {
        return lastLogin;
    }

    public void setLastLogin(Date lastLogin) {
        this.lastLogin = lastLogin;
    }

    public Integer getUserStatus() {
        return userStatus;
    }

    public void setUserStatus(Integer userStatus) {
        this.userStatus = userStatus;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", username='" + name + '\'' +
                ", userpass='" + userpass + '\'' +
                ", nickname='" + nickname + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", phone='" + phone + '\'' +
                ", email='" + email + '\'' +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                ", lastLogin=" + lastLogin +
                ", userStatus=" + userStatus +
                ", remark='" + remark + '\'' +
                '}';
    }
}

detail.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>慕课网用户管理中心</title>
    <link rel="stylesheet" href="lib/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    <script src="lib/2.2.4/jquery-1.12.4.min.js"></script>
    <script src="lib/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="page-header">
            <h1>慕课网后台管理系统
                <small>用户数据管理中心</small>
            </h1>
        </div>
    </div>
    <div class="row">
        <div class="jumbotron">
            <h1>MyBatis基础入门课程</h1>
            <p>通过一个项目来完成基础部分的学习</p>
            <p><a class="btn btn-primary btn-lg" href="#" role="button">查看更多,请上慕课网</a></p>
        </div>
    </div>
    <c:set var="user" value="${user}"></c:set>
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <form class="form-horizontal" action="${pageContext.request.contextPath}/updateusers">
                <input type="hidden" name="id" value="${user.id}">
                <div class="form-group">
                    <label class="col-sm-2 control-label">用户账号</label>
                    <div class="col-sm-10">
                        <%--<p class="form-control-static">${user.username}</p>--%>
                        <p class="form-control-static">${user.name}</p>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">登陆密码</label>
                    <div class="col-sm-10">
                        <p class="form-control-static">************</p>
                    </div>
                </div>
                <div class="form-group">
                    <label for="nickname" class="col-sm-2 control-label">昵称</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="nickname" value="${user.nickname}" name="nickname"
                               placeholder="请输入昵称">
                    </div>
                </div>
                <div class="form-group">
                    <label for="age" class="col-sm-2 control-label">年龄</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="age" value="${user.age}" name="age"
                               placeholder="请输入年龄">
                    </div>
                </div>
                <div class="form-group">
                    <label for="gender" class="col-sm-2 control-label">性别</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="gender" value="${user.gender}" name="gender"
                               placeholder="请输入性别">
                    </div>
                </div>
                <div class="form-group">
                    <label for="phone" class="col-sm-2 control-label">联系方式</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="phone" value="${usre.phone}" name="phone"
                               placeholder="请输入联系方式">
                    </div>
                </div>
                <div class="form-group">
                    <label for="email" class="col-sm-2 control-label">邮箱</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="email" name="email" value="${user.email}"
                               placeholder="请输入邮箱">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">账号创建时间</label>
                    <div class="col-sm-10">
                        <p class="form-control-static">
                            <fmt:formatDate value="${user.createTime}"></fmt:formatDate></p>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">最后修改时间</label>
                    <div class="col-sm-10">
                        <p class="form-control-static">
                            <fmt:formatDate value="${user.updateTime}"></fmt:formatDate></p>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">最后登陆时间</label>
                    <div class="col-sm-10">
                        <p class="form-control-static"><fmt:formatDate value="${user.lastLogin}"></fmt:formatDate></p>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">用户状态</label>
                    <div class="col-sm-10">
                        <c:if test="${user.userStatus == 0}">
                            <p class="form-control-static">正常</p>
                        </c:if>
                        <c:if test="${user.userStatus == 1}">
                            <p class="form-control-static">锁定</p>
                        </c:if>
                        <c:if test="${user.userStatus == 2}">
                            <p class="form-control-static">删除</p>
                        </c:if>
                    </div>
                </div>
                <div class="form-group">
                    <label for="remark" class="col-sm-2 control-label">备注</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="remark" value="${user.remark}" name="remark"
                               placeholder="请输入备注">
                    </div>
                    <div class="form-group">
                        <input type="submit" value="提交数据更新" class="btn btn-primary">
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>
</body>
</html>

mapper/usersMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper 用于定义一个映射配置文件的根节点
namespace 属性是用来配置命名空间,主要进行session级别的缓存管理
命名空间默认情况下,使用我们当前操作的实体类的全路径
-->
<mapper namespace="com.damu.entity.Users">

    <!--<select id="findUsers" resultType="com.damu.entity.Users">-->
        <!--select * from users-->

        <!--<if test="id!=null">-->
            <!--where id=#{id}-->
        <!--</if>-->
    <!--</select>-->

    <select id="findUsers" resultMap="forUsers">
        select * from users
        <if test="id!=null">
            where id=#{id}
        </if>
    </select>

    <!-- 自定义映射关系集合:主要包含对于一些自定义的操作的配置,如不一致的属性和字段-->
    <resultMap id="forUsers" type="com.damu.entity.Users">
        <!--<id column="" property=""></id> -->
        <!-- result配置:主要配置普通属性,column表示配置的是数据库字段名称 property配置的是实体类的属性名称-->
        <result column="username" property="name"></result>
    </resultMap>


    <sql id="user_fields">
        username,userpass,nickname,age,gender,email,phone,createTime,updateTime,lastLogin,userstatus,remark
    </sql>
    <!--useGeneratedKeys 取值范围true|false 默认值是:false。 含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。-->
    <!--   主要是在主键是自增的情况下,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值不是数据库表中的字段名 keyProperty="对应的主键的对象"-->
    <insert id="addUser" useGeneratedKeys="true" keyProperty="id">
        insert into users(<include refid="user_fields"></include> )
        value (#{name},#{userpass},#{nickname},#{age},#{gender},#{email},#{phone},#{createTime},#{updateTime},#{lastLogin},#{userStatus},#{remark})
    </insert>

    <update id="updateUser">
        update users
        <set>
            <if test="name != null">username = #{name},</if>
            <if test="userpass != null">userpass = #{userpass},</if>
            <if test="nickname != null">nickname = #{nickname},</if>
            <if test="age != null">age = #{age},</if>
            <if test="gender != null">gender = #{gender},</if>
            <if test="email != null">email = #{email},</if>
            <if test="phone != null">phone = #{phone},</if>
            <if test="createTime != null">createTime = #{createTime},</if>
            <if test="updateTime != null">updateTime = #{updateTime},</if>
            <if test="lastLogin != null">lastlogin = #{lastLogin},</if>
            <if test="userStatus != null">userStatus = #{userStatus},</if>
            <if test="remark != null">remark = #{remark},</if>
        </set>
        where id = #{id}
    </update>
</mapper>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
杜耀洪 2019-01-26 18:08:12

创建User时,调用的构造函数是Users user = new Users(username, userpass, nickname, Integer.parseInt(age), gender, email,phone, new Date(), new Date(), new Date(), 0);

而实际的构造函数是Users(String name, String userpass, String nickname, Integer age, String gender, String phone, String email, Date createTime, Date updateTime, Date lastLogin, Integer userStatus)

phone 和 email 的位置错了

而提供的sql语句,phone VARCHAR(13) COMMENT '联系方式',
email VARCHAR(20) COMMENT '用户邮箱',

phone是13是字符,email是20个字符,那么当填的email大于13个的时候,程序运行就会报错了,这个user根本插入不到数据库


一叶知秋519 2018-05-21 16:53:38

你检查一下数据库中phone字段定义的是多长的,再检查对照一下你插入的数据是不是超过了字段长度~~ 

祝学习愉快!

  • 提问者 音殿 #1
    别的数据也是同样的数字 都不行
    2018-05-21 16:54:21
  • 提问者 音殿 #2
    没说清楚 就是说 数据库里面别的客户有phone数据了 我修改别的客服的时候 使用同样的号码 改不了
    2018-05-21 16:55:43
  • 一叶知秋519 回复 提问者 音殿 #3
    你把要插入的数据改短一点,之前插入10位,现在改为5位试下可以吗?
    2018-05-21 17:43:34
提问者 音殿 2018-05-21 16:04:14


http://img1.sycdn.imooc.com//climg/5b027d640001175914770633.jpg

http://img1.sycdn.imooc.com//climg/5b027d640001ad0716590910.jpg

不可能数据太长呀 其他用户也是差不多的数据

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师