发表于: 2017-12-09 23:57:33
1 594
今天完成的事:
1、jdbcTemplate插入数据后返回主键值,更新或删除后返回true/false。
2、Mybatis插入数据返回主键值,更新或删除后返回true/false。
3、解决centos7中mysql的中文乱码问题。
遇到问题:
1、mybatis连接数据库增删改查,可以只有dao没有dao的实现层,
实现删改后返回值为true/false,找了很多例子,但是都是必须得有dao的实现层。不知道是不是我找的方向不对。
网上的例子把我带的跑偏了,理解有误。哭晕在厕所。还是对这些方法理解不够。
2、linux中mysql中文乱码问题,百度有两种方式更改字符编码方式,修改配置文件my.cnf,或者直接用命令行改然后重启;
用命令行改完后,查询就没问题,但重启后就又出现问题了。
my.cnf中说分别在[mysqld],[mysql],[client]添加相关内容,但是my.cnf中只有一个[mysqld],添加character_set_server = utf8后仍没有解决;
解决方式:在my.cnf中添加[mysql],[client],再在下面添加相关内容。
[mysqld]
character_set_server = utf8
[mysql]
default_character_set=utf8
[client]
default_character_set=utf8
明天计划:
mybatis的注解方式去配置数据库;
总结任务1,包括maven命令,linux基本命令。
收获:
1、jdbcTemplate的增删改都是update()方法,其返回值是int类型,然后对再用if条件语句判断
int i = getJdbcTemplate().update(sql, id);
插入数据后返回主键值很麻烦,代码
public void insertUser(final User user) {
KeyHolder keyHolder = new GeneratedKeyHolder();
final String sql ="insert into users (name,age) values (?,?)";
PreparedStatementCreator psc = new PreparedStatementCreator(){
public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
int i = 0;
java.sql.PreparedStatement ps = conn.prepareStatement(sql);
ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(++i, user.getName() );
ps.setInt(++i, user.getAge() );
return ps;
}
};
getJdbcTemplate().update( psc,keyHolder);
int i = keyHolder.getKey().intValue();
System.out.println(i);
}
2、mybatis插入数据后返回主键值就很容易了,两种方法
方法1:在<insert>的内容中添加<selectKey>标签
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Short">
SELECT LAST_INSERT_ID()
</selectKey
方法二,<insert>添加相关属性值,keyProperty是主键的字段名
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id" >
3、修改字符编码为utf-8,
查看字符编码---SHOW VARIABLES LIKE 'character_set_%';
查看用户权限---select host, user from user;
重启mysql--- service mysql restart(5.5以上版本)
禅道:
http://task.ptteng.com/zentao/my-task.html
评论