发表于: 2017-05-29 20:11:30

1 1144


今天完成的事:

今天主要是对任务一做一个复习,今天把用JDBC和MyBatis进行增删盖查,期间因为是自己全部手动敲代码,因此对每一处有疑问都会搞清楚了再往下进行。

明日计划:

计划进行任务4,同时留出一部分时间复习spring与mybatis的结合。

遇到的问题:

今天遇到的问题有好几个,但经过对问题的分析好多都能找到解决的办法。一个比较深刻的问题*

public boolean updateById(Student stu) {
//声明返回值变量
   boolean flag = false;
//获取连接对象
   conn = JdbcUtil.getConn();
//定义sql语句
   String sql = "update stu_info set stu_name=?, school=?, sign=?, introducer=?, update_at=? where id=?";
try {
//根据sql语句创建预处理对象
       pstmt = conn.prepareStatement(sql);
//为占位符赋值
       int index = 1;
pstmt.setObject(index++, stu.getStu_name());
pstmt.setObject(index++, stu.getSign());
pstmt.setObject(index++, stu.getSchool());
pstmt.setObject(index++, stu.getIntroducer());
pstmt.setObject(index++, stu.getUpadte_at());
pstmt.setObject(index, stu.getId());

//执行更新
       int i = pstmt.executeUpdate();
if (i>0){
flag = true;
}
}catch (SQLException e){
e.printStackTrace();
}

//释放资源
   JdbcUtil.release(rs, pstmt);
return flag;

}

上面加粗的那行代码,一开始我是放在最前面的,因为之前一直以为setObject(int ParameterIndex,  Object X)中ParameterIndex是要与数据库中的字段角标一致,结果就是执行失败,然后把它放到最后面就执行成功了。查看jdk文档,parameterIndex应该对应的是sql语句上的顺序。

第二个有意思的问题:

前面用JDBC增删改查没有问题,后面用MyBatis时却发生了中文乱码的问题,然后发现是配置文件里面有缺失:

<!--配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/students?Unicode=true&amp;characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>

黑色部分即为缺失的。有意思的事情在于,一开始我并没有添加(amp;),因此会报错,大概就是转义出问题了。一开始很纳闷,JDBC教程上就没写amp;不也好好的么?后面找到一个人的教程,末尾有相关解释:

【可以看到在连接的url后添加了useUnicode和characterEncoding的值,设定为utf-8.

这里有一点需要注意的是,在xml配置文件中,需要将'&'符号转义,所以这里要写成'&amp;'。

如果是在配置文件中,则无法转义,应为: xxxx.jdbc.url=jdbc:mysql://127.0.0.1:8080:3306/uct?useUnicode=true&characterEncoding=UTF-8 】---这里他是不是说错了,应该是“不在配置文件,则无法转义”吧。

收获:今天再次复习任务一,忽然发现以前的东西并没有那么难了,自信心又增加了,希望越来越好。


返回列表 返回列表
评论

    分享到