mybatis generator只能生成insert和selectAll的操作

网友投稿 334 2022-11-19


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 warnings) {

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 warnings) {

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小时内删除侵权内容。

上一篇:简单了解redis常见客户端及Sharding机制原理
下一篇:Spring框架读取property属性文件常用5种方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~