mybatis 实体类中使用 localdatetime类型报错
Error attempting to get column 'create_time' from result set java.sql.SQLFeatureNotSupportedException: null at com.alibaba.druid.pool.DruidPooledResultSet.getObject(DruidPooledResultSet.java:1771) ~[druid-1.1.12.jar:1.1.12] at org.apache.ibatis.type.LocalDateTimeTypeHandler.getNullableResult(LocalDateTimeTypeHandler.java:38) ~[mybatis-3.5.7.jar:3.5.7]解决办法:
1.升级 druid 数据源版本
2.不使用 druid 数据源
兄弟类
LocalDate
动态sql更新语句报错
当条件都为空时,后台就会报错
<update id="update">
update salary
<set>
<if test="emp_name != null and emp_name != '' ">
emp_name = #{emp_name},
</if>
<if test="basic != null">
basic = #{basic},
</if>
<if test="total != null">
total = #{total}
</if>
</set>
where emp_id = #{emp_id};
</update>
### The error may exist in guet/dao/salaryDao.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: update salary where emp_id = ?;
解决办法:
第一种:在末尾再多写一个if
<if test="emp_id != null">
emp_id = #{emp_id}
</if>
第二种:封装一个工具类,判断POJO里的属性是否全为空,全为空,就不进行更新操作了。
这里用到反射
public class ObjectIsNullUitl {
public static boolean checkFieldAllNull(Object object) throws IllegalAccessException {
for (Field f : object.getClass().getDeclaredFields()) {
System.out.println("name:" + f.getName());
f.setAccessible(true);
if (Modifier.isFinal(f.getModifiers()) && Modifier.isStatic(f.getModifiers())) {
continue;
}
if (!isEmpty(f.get(object))) {
return false;
}
f.setAccessible(false);
}
//父类public属性
for (Field f : object.getClass().getFields()) {
System.out.println("name:" + f.getName());
f.setAccessible(true);
if (Modifier.isFinal(f.getModifiers()) && Modifier.isStatic(f.getModifiers())) {
continue;
}
if (!isEmpty(f.get(object))) {
return false;
}
f.setAccessible(false);
}
return true;
}
private static boolean isEmpty(Object object) {
if (object == null) {
return true;
}
if (object instanceof String && (object.toString().equals(""))) {
return true;
}
if (object instanceof Collection && ((Collection) object).isEmpty()) {
return true;
}
if (object instanceof Map && ((Map) object).isEmpty()) {
return true;
}
if (object instanceof Object[] && ((Object[]) object).length == 0) {
return true;
}
return false;
}
}