mybatis generator只能生成insert和selectAll的操作
一般出現(xiàn)這個(gè)情況的時(shí)候,怎么辦?
第一步:不要慌,保持冷靜的思考和清醒的頭腦,這很關(guān)鍵!
第二步:打開瀏覽器,搜索一下:Cannot obtain primary key information from the database, generated objects may be incomplete這個(gè)錯(cuò)誤,
遇到這種情況的時(shí)候,代碼生成器就只會生成insert和selectAll這兩個(gè)方法,這個(gè)時(shí)候需要在jdbc配置的connectionURL上加上一個(gè)參數(shù):nullCatalogMeansCurrent=true。然后重新執(zhí)行代碼生成器,就可以看到其他的方法都出現(xiàn)了。
我的generatorConfig.xml配置如下(注意看connectionURL配置):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <classPathEntry location="D:\iflytek\maven\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar"/> <context id="MysqlTables" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <property name="autoDelimitKeywords" value="true"/> <property name="javaFileEncoding" value="utf-8"/> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <!--覆蓋xml文件--> <plugin type="com.xqnode.boot.util.OverwriteXmlPlugin"/> <!-- 注釋 --> <commentGenerator type="com.xqnode.boot.util.CommentGenerator"> <property name="suppressAllComments" value="true"/><!-- 是否取消注釋 --> </commentGenerator> <!-- jdbc連接 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true" userId="root" password="123456"/> <!-- 類型轉(zhuǎn)換 --> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成實(shí)體類地址 --> <javaModelGenerator targetPackage="com.xqnode.boot.model" targetProject="src/main/java"> <property name="enableSubPackages" value="false"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成mapxml文件 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="false"/> </sqlMapGenerator> <!-- 生成mapxml對應(yīng)client,也就是接口dao --> <javaClientGenerator targetPackage="com.xqnode.boot.dao" targetProject="src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="false"/> </javaClientGenerator> <table tableName="t_user" domainObjectName="User" mapperName="UserMapper" /> </context> </generatorConfiguration>
這里面有我的兩個(gè)代碼插件:
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 OverwriteXmlPlugin extends PluginAdapter { @Override public boolean validate(List<String> warnings) { return true; } @Override public boolean sqlMapGenerated(GeneratedXmlFile sqlMap, IntrospectedTable introspectedTable) { sqlMap.setMergeable(false); return super.sqlMapGenerated(sqlMap, introspectedTable); } }
補(bǔ)充知識:老司機(jī)學(xué)習(xí)MyBatis之如何通過select返回List
一、案例
當(dāng)要查詢的結(jié)果不是單個(gè)記錄而是一個(gè)集合的時(shí)候,MyBatis的resultType寫的依然是集合中的對象的類型名稱,例如:
<select id="getAllUsers" resultType="com.queen.mybatis.bean.User"> select id, loginId, userName, role, note from t_user </select>
該查詢語句,查出的是所有用戶數(shù)據(jù),注意resultType里面寫的依然是集合中的對象的類型名稱。
不能寫成java.util.List,否則查詢會報(bào)錯(cuò),下面我們演示一下這種情況:
修改XML文件:
<select id="getAllUsers" resultType="java.util.List"> select id, loginId, userName, role, note from t_user </select>
控制臺打印報(bào)錯(cuò)信息:
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直接拋出了異常。
以上這篇mybatis generator只能生成insert和selectAll的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解決Mybatis中mapper.xml文件update,delete及insert返回值問題
- mybatis中insert返回值為1,但數(shù)據(jù)庫卻沒有數(shù)據(jù)
- mybatis的insert語句插入數(shù)據(jù)時(shí)的返回值的實(shí)現(xiàn)
- 詳解mybatis plus使用insert沒有返回主鍵的處理
- 使用mybatis-plus的insert方法遇到的問題及解決方法(添加時(shí)id值不存在異常)
- mybatis insert返回主鍵代碼實(shí)例
- MyBatis insert操作插入數(shù)據(jù)之后返回插入記錄的id
- 解決Mybatis 大數(shù)據(jù)量的批量insert問題
相關(guān)文章
Shiro+Redis實(shí)現(xiàn)登錄次數(shù)凍結(jié)的示例
這篇文章主要介紹了Shiro+Redis實(shí)現(xiàn)登錄次數(shù)凍結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Spring中@Transactional注解關(guān)鍵屬性和用法小結(jié)
在Spring框架中,@Transactional 是一個(gè)注解,用于聲明事務(wù)性的方法,它提供了一種聲明式的事務(wù)管理方式,避免了在代碼中直接編寫事務(wù)管理相關(guān)的代碼,本文給大家介紹@Transactional 注解的一些關(guān)鍵屬性和用法,感興趣的朋友一起看看吧2023-12-12Springboot maven plugin插件原理及作用
這篇文章主要介紹了Springboot maven plugin插件原理及作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Spring動態(tài)數(shù)據(jù)源實(shí)現(xiàn)讀寫分離詳解
這篇文章主要為大家詳細(xì)介紹了Spring動態(tài)數(shù)據(jù)源實(shí)現(xiàn)讀寫分離,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07使用Java實(shí)現(xiàn)希爾排序算法的簡單示例
這篇文章主要介紹了使用Java實(shí)現(xiàn)希爾排序算法的簡單示例,希爾排序可以被看作是插入排序的一種更高效的改進(jìn)版本,需要的朋友可以參考下2016-05-05IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 創(chuàng)建多模塊項(xiàng)目的超詳細(xì)教程
這篇文章主要介紹了IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 創(chuàng)建多模塊項(xiàng)目的教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09使用Jackson-json解析一個(gè)嵌套的json字符串
這篇文章主要介紹了使用Jackson-json解析一個(gè)嵌套的json字符串,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09SpringCloud Alibaba微服務(wù)實(shí)戰(zhàn)之遠(yuǎn)程Feign請求頭丟失問題解決方案
這篇文章主要介紹了SpringCloud Alibaba微服務(wù)實(shí)戰(zhàn)之遠(yuǎn)程Feign請求頭丟失問題,對SpringCloud Alibaba Feign請求頭問題感興趣的朋友跟隨小編一起看看吧2024-02-02