app开发者平台在数字化时代的重要性与发展趋势解析
846
2023-03-31
mybatis generator只能生成insert和selectAll的操作
一般出现这个情况的时候,怎么办?
第一步:不要慌,保持冷静的思考和清醒的头脑,这很关键!
第二步:打开浏览器,搜索一下:Cannot obtain primary key information from the database, generated objects may be incomplete这个错误,
遇到这种情况的时候,代码生成器就只会生成insert和selectAll这两个方法,这个时候需要在jdbc配置的connectionURL上加上一个参数:nullCatalogMeansCurrent=true。然后重新执行代码生成器,就可以看到其他的方法都出现了。
我的generatorConfig.xml配置如下(注意看connectionURL配置):
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybathttp://is-generator-config_1_0.dtd">
location="D:\iflytek\maven\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar"/> connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true" userId="root" password="123456"/> type="XMLMAPPER"> 这里面有我的两个代码插件: 1、注释插件CommentGenerator: package com.xqnode.boot.util; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.dom.java.Field; import org.mybatis.generator.internal.DefaultCommentGenerator; /** * 生成model中,字段增加注释 */ public class CommentGenerator extends DefaultCommentGenerator { @Override public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { super.addFieldComment(field, introspectedTable, introspectedColumn); if (!"".equals(introspectedColumn.getRemarks())) { field.addJavaDocLine("/**"); field.addJavaDocLine(" * " + introspectedColumn.getRemarks()); field.addJavaDocLine(" */"); } } } 2、xml文件覆盖插件OverwriteXmlPlugin: package com.xqnode.boot.util; import org.mybatis.generator.api.GeneratedXmlFile; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import java.util.List; /** * @version 1.0.0 */ public class Overwhttp://riteXmlPlugin extends PluginAdapter { @Override public boolean validate(List return true; } @Override public boolean sqlMapGenerated(GeneratedXmlFile sqlMap, IntrospectedTable introspectedTable) { sqlMap.setMergeable(false); return super.sqlMapGenerated(sqlMap, introspectedTable); } } 补充知识:老司机学习MyBatis之如何通过select返回List 一、案例 当要查询的结果不是单个记录而是一个集合的时候,MyBatis的resultType写的依然是集合中的对象的类型名称,例如: select id, loginId, userName, role, note from t_user 该查询语句,查出的是所有用户数据,注意resultType里面写的依然是集合中的对象的类型名称。 不能写成java.util.List,否则查询会报错,下面我们演示一下这种情况: 修改XML文件: select id, loginId, userName, role, note from t_user 控制台打印报错信息: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.UnsupportedOperationException ### The error may exist in UserMapper.xml ### The error may involve com.queen.mybatis.mapper.UserMapper.getAllUsers ### The error occurred while handling results ### SQL: select id, loginId, userName, role, note from t_user ### Cause: java.lang.UnsupportedOperationException at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102) 写成java.util.List直接抛出了异常。
location="D:\iflytek\maven\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar"/>
connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true" userId="root" password="123456"/> type="XMLMAPPER">
connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true"
userId="root"
password="123456"/>
type="XMLMAPPER">
type="XMLMAPPER">
这里面有我的两个代码插件:
1、注释插件CommentGenerator:
package com.xqnode.boot.util;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.internal.DefaultCommentGenerator;
/**
* 生成model中,字段增加注释
*/
public class CommentGenerator extends DefaultCommentGenerator {
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
super.addFieldComment(field, introspectedTable, introspectedColumn);
if (!"".equals(introspectedColumn.getRemarks())) {
field.addJavaDocLine("/**");
field.addJavaDocLine(" * " + introspectedColumn.getRemarks());
field.addJavaDocLine(" */");
}
}
}
2、xml文件覆盖插件OverwriteXmlPlugin:
package com.xqnode.boot.util;
import org.mybatis.generator.api.GeneratedXmlFile;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import java.util.List;
/**
* @version 1.0.0
*/
public class Overwhttp://riteXmlPlugin extends PluginAdapter {
@Override
public boolean validate(List
return true;
}
@Override
public boolean sqlMapGenerated(GeneratedXmlFile sqlMap, IntrospectedTable introspectedTable) {
sqlMap.setMergeable(false);
return super.sqlMapGenerated(sqlMap, introspectedTable);
}
}
补充知识:老司机学习MyBatis之如何通过select返回List
一、案例
当要查询的结果不是单个记录而是一个集合的时候,MyBatis的resultType写的依然是集合中的对象的类型名称,例如:
select id, loginId, userName, role, note from t_user
该查询语句,查出的是所有用户数据,注意resultType里面写的依然是集合中的对象的类型名称。
不能写成java.util.List,否则查询会报错,下面我们演示一下这种情况:
修改XML文件:
select id, loginId, userName, role, note from t_user
控制台打印报错信息:
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.UnsupportedOperationException
### The error may exist in UserMapper.xml
### The error may involve com.queen.mybatis.mapper.UserMapper.getAllUsers
### The error occurred while handling results
### SQL: select id, loginId, userName, role, note from t_user
### Cause: java.lang.UnsupportedOperationException
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
写成java.util.List直接抛出了异常。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~