springboot整合mybatis遇到的问题与解决方法

1. 查询结果返回如下:
{“id”:2,”userName”:null,”userAccount”:null,”password”:”33333″,”createTime”:null}
引起该问题有两个:

1)数据库建表,字段采用驼峰命名

CREATE TABLE sys_common_user( idint(11) NOT NULL AUTO_INCREMENT COMMENT '主键', user_namevarchar(30) DEFAULT NULL COMMENT '用户名称', user_accountvarchar(15) NOT NULL COMMENT '用户账号', passwordvarchar(15) NOT NULL COMMENT '用户密码', create_time datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
2)mybatis为开启驼峰命名

解决方法:在配置文件中开启驼峰命名,mybatis.configuration.map-underscore-to-camel-case=true

2. 采用注解方式插入数据,报错如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'user_name' in 'class com.wl.mapadmin.model.SysCommonUser' at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) at com.sun.proxy.$Proxy65.insert(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)

造成以上原因是由于插入语句如下:

@Insert("insert into sys_common_user (id,user_name,user_account,password,create_time) values (#{id},#{user_name},#{user_account},#{password},#{create_time})") int add(SysCommonUser user);

是由于实体字段名称的原因造成,改成如下语句即可:

@Insert("insert into sys_common_user (id,user_name,user_account,password,create_time) values (#{id},#{userName},#{userAccount},#{password},#{createTime})") int add(SysCommonUser user);

3.插入数据中文乱码,可能的原因有如下两个:

1)mysql创建表时表字符集没有设定为utf8

2)mysql链接配置地址:jdbc:mysql://127.0.0.1:3306/gismap?useUnicode=true&characterEncoding=utf8
需要加上useUnicode=true&characterEncoding=utf8

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享