mybatis generator只能生成insert和selectAll方法

模板代码生成工具实战:从原理、选型到落地应用 在软件开发中,重复编写结构相似的代码是效率低下的重要原因,而模板引擎正是解决这一问题的核心工具。它的本质可以概括为“数据 + 模板 = 输出结果”,通过将变化的数据与固定的代码骨架分离,实现一次定义、多次生成。合理运用代码生成技术,能显著提升工程效率,尤其适合CRUD接口、配置文件、数据库脚本等高频重复场景。无论是使用Freemarker、Jinja2等引擎自建生成器,还是借助若依、MyBatis-Plus等现有工具,掌握其原理和选型思路都至关重要。本文从模板生成的核心概念讲起,详细解析其工作原理、技术价值 阅读详情

一般出现这个情况的时候,怎么办?
第一步:不要慌,保持冷静的思考和清醒的头脑,这很关键!
第二步:打开浏览器,搜索一下:Cannot obtain primary key information from the database, generated objects may be incomplete这个错误,
遇到这种情况的时候,代码生成器就只会生成insert和selectAll这两个方法,这个时候需要在jdbc配置的connectionURL上加上一个参数:nullCatalogMeansCurrent=true。然后重新执行代码生成器,就可以看到其他的方法都出现了。
在这里插入图片描述

我的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&amp;nullCatalogMeansCurrent=true"
                        userId="root"
                        password="123456"/>
        <!-- 类型转换 -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成实体类地址 -->
        <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对应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>

这里面有我的两个代码插件:
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);
    }

}

–end–

TkMyBatis实战:告别MyBatis重复SQL,实现单表CRUD自动化 在Java企业级应用开发中,ORM框架是连接对象模型与关系数据库的核心组件,其核心原理是通过元数据映射与动态SQL生成,将面向对象的操作转换为高效的数据库指令。MyBatis作为一款半自动化的持久层框架,以其对SQL的精细控制能力而广受欢迎,但在处理大量单表操作时,开发者仍需编写大量重复的XML映射文件,影响了开发效率。TkMyBatis作为MyBatis的增强工具包,通过引入通用Mapper和基于反射的动态SQL生成机制,实现了单表CRUD操作的自动化。其技术价值在于,它巧妙地在保留MyBatis原生灵活 阅读详情

相关推荐

MyBatis核心原理与Spring Boot集成实战:从SQL映射到动态SQL

在Java后端开发中,数据持久化是构建稳定应用的核心基础。从基础的JDBC到全自动ORM框架,技术演进始终围绕如何平衡开发效率与执行控制力。MyBatis作为一款半自动的持久层框架,其核心原理在于将SQL控制权交还开发者,同时通过智能的结果集映射消除JDBC的模板代码。这一设计带来了显著的技术价值:开发者可以编写和优化原生SQL,充分利用数据库特性,并借助动态SQL能力安全、灵活地构建复杂查询条件。在互联网、金融等对数据库性能有严苛要求的应用场景中,这种“SQL-Mapping”模式成为事实标准。本文通过S

weixin_30781433的博客 479

mybatis generator生成接口只有insert和selectAll的方法

前言 在这里插入代码片`各位大大,问题解决后,发现是因为自己的小小失误造成的。 这个请各位大大轻喷。 这个记录一下自己踩的坑。 2020年4月8日 问题描述 第一次使用mybatis generator 动态生成mapper接口和xml文件。出现只有insert和selectAll的方法。 解决方法 在百度上面花了近4个小时后发现。可能是自己在创建数据库表的时候,没有id没有使用主键。经过查资...

YangKK_ 899

华硕天选3 win11+ubuntu20.04双硬盘双系统配置(包括ubuntu重启后无法成功进入、没有wifi图标的设置)

1、制作系统盘 2、分区 3、重启电脑按F2

baidu_38431960的博客 1万+

MyBatis Generator 只生成插入insert,没有修改,delete

今天发现generator生成mapper的时候只生成了insert的方法,其他的都没有生成出来,具体看看配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Conf...

码者人生的技术博客 1130

赛灵思Xilinx 7系列FPGA硬件设计知识总结

本文讲述了赛灵思7系列FPGA硬件设计的关键点,为使用该系列FPGA提供硬件设计参考。

csdn_dsw的博客 3617

单细胞分析避坑指南:你的Harmony批次矫正真的做对了吗?

本文深入探讨了单细胞转录组分析中Harmony批次矫正的正确使用方法,解析了其工作原理及常见误区。通过详细参数调优指南和实战案例,帮助研究者避免过度矫正,确保生物学信号的有效保留。特别关注Harmony在单细胞数据分析中的关键参数设置和结果验证方法。

weixin_31099291的博客 298

mybits-generator生成的insert方法如何返回自增id

在mybits-generator生成的代码里面是不能自动把id返回来的,可以增加useGeneratedKeys和keyProperty属性来获取id,例如:这里设置返回的是id字段,在经过处理后会自动的把id填充到shipping里面,就是这里 ...

weixin_43809055的博客 774

PyTorch实战:手把手教你用QAT量化感知训练拯救模型精度(附避坑指南)

本文详细介绍了如何使用PyTorch进行QAT量化感知训练,以提升模型在边缘设备上的推理精度。通过核心原理讲解、实战代码示例和避坑指南,帮助开发者掌握从环境配置、模型训练到边缘部署的全流程,有效解决传统量化方法导致的精度损失问题。

c7d8e的博客 326

MyBatis Generator 无法生成 selectByPrimaryKey、updateByPrimaryKey、deleteByPrimaryKey等主键操作方法

  SpringBoot 项目采用 MyBatis Generator 插件为表 tbl_onl_test 生成 Mapper 文件时,发现生成的文件比以往少了 selectByPrimaryKey、updateByPrimaryKey、deleteByPrimaryKey 等几个方法,对应的 xml 文件中同样也少了这几个,并且 xml 文件中的 resultMap 节点里主键 id 使用的是 result 标签,而不是id标签,现象如下所示。   tbl_onl_test 表结构: CREATE TAB

长安明月的博客 2389

硬件之光实战篇--Boost

当开关管处于关闭状态时,由于电感中的电流在短时间内不能瞬间消失,因此它会产生一个电感电动势,在电容器上加上一个高电压,从而使输出电压变高。--------------------------------------------------------分割线----------------------------------------------------------------在应用中,升压芯片需要根据负载电路的需求,选择合适的电感和电容等元器件,以达到所需要的升压倍数和输出电压。

m0_58664890的博客 2100

Image Sensor卷帘曝光(Rolling Shutter)基本原理以及对曝光行的通俗理解

由于CMOS sensor的曝光方式是一行一行的方式进行的,任何一个pixel的曝光时间是一样的,也就是同一行上的每个pixel的曝光开始点和曝光的时间都是一模一样的,所以同一行的所有点所接受到的能量是一样的,而在不同行之间虽然曝光时间都是一样的,但是曝光的开始点是不同的,所以不同行之间所接受到的能量是不一定相同的。至此完成了这一行的曝光。还是以桶装水为比喻: 排成一行的桶(桶的数量和每个桶的大小确定),每一曝光行为单位的时间内每一个桶加水都是一样,需要多少个曝光行才能使的所有水桶加起来的水达到1L。

大熊 3921

Mybatis Generator insert useGeneratedKeys keyProperty

Mybatis自动生成代码,需要用到mybatis Generator,详见http://mybatis.github.io/generator/configreference/generatedKey.html insert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,例如 &lt;insert id="insert" paramete...

weixin_34049948的博客 528

DeepSeek 赋能智慧消防:以 AI 之力筑牢城市安全 “防火墙”

在数字化浪潮下,智慧消防系统亟需先进技术提升效能。DeepSeek 凭借 Transformer 架构与混合专家架构等核心技术,具备强大的多模态数据处理与智能决策能力,且支持本地化部署,保障数据安全。其在智慧消防领域的应用成效显著,从实现火灾风险动态感知与早期精准预警,到优化智能接警调度、设备健康管理,再到辅助应急指挥与疏散,有效降低火灾风险与事故损失。未来,DeepSeek 有望在智慧消防领域持续拓展,同时也需应对技术、数据等多方面挑战。

邓邓子的博客 1690

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

一般出现这个情况的时候,怎么办?第一步:不要慌,保持冷静的思考和清醒的头脑,这很关键!第二步:打开浏览器,搜索一下:Cannot obtain primary key information from the database, generated objects may be incomplete这个错误,遇到这种情况的时候,代码生成器就只会生成insert和selectAll这两个方法,这个时...

weixin_42503482的博客 315

A-Frame引擎开发:A-Frame基础入门_(11).A-Frame物理引擎集成

在上一节中,我们学习了如何在A-Frame中创建基本的3D场景和交互元素。然而,为了使虚拟现实游戏更具真实感和互动性,物理引擎的集成是必不可少的。物理引擎可以模拟现实世界中的物理行为,如重力、碰撞、摩擦等,从而增强用户的沉浸感。物理引擎在虚拟现实游戏中的重要性不言而喻。它不仅能够模拟物体的运动和相互作用,还能为游戏提供更真实的反馈和体验。例如,当玩家在虚拟世界中推动一个物体时,物理引擎可以确保物体按照预期的方式移动,而不是简单地穿墙而过或突然消失。重力是物理引擎中最基本的特性之一。在A-Frame中,我们可

chenlz2007的博客 794

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Mybatis Generator 生成的mapper只有insert方法

一般有两种情况第一种是配置问题可以参考博客http://blog.youkuaiyun.com/angel_xiaa/article/details/52474022第二种是mysql-connector-java版本问题,出现警告(Cannot obtain primary key information from the database, generated objects may be inc...

weixin_30263073的博客 96

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MyBatis Generator

MyBatis Generator (MBG) 是MyBatis的代码生成器。MBG试图对大部分简单CRUD的数据库操作产生重大影响。

Ablel的博客 223

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MyBatis-Plus与TK-Mapper代码生成器实战指南

ORM框架是Java后端开发中处理数据库操作的核心组件,通过对象关系映射技术简化了数据库交互。MyBatis-Plus作为MyBatis的增强工具,配合TK-Mapper的通用Mapper实现,可以大幅提升开发效率。代码自动生成技术通过解析数据库表结构,自动创建实体类、Mapper接口及XML映射文件,减少重复劳动。在Spring Boot项目中,通过配置MyBatis-Plus Generator和TK-Mapper插件,开发者可以快速生成基础CRUD代码,并支持Lombok注解、分页查询等高级功能。这种

cnracht8153的博客 344

mybatis genertor 实践及遇到的问题

参考: Spring boot Mybatis 整合(完整版)——没有坑点,一次成功 https://blog.youkuaiyun.com/Winter_chen001/article/details/77249029 https://blog.youkuaiyun.com/pucao_cug/article/details/64499355 https://blog.youkuaiyun.com/Winter_chen001/a...

回纹勾边宝相花团 1001

MyBatisPlus mybatis-plus-join

一、MyBatis Plus 介绍 MyBatis Plus是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 MyBatis Plus 的核心功能有:支持通用的 CRUD、代码生成器与条件构造器。 通用 CRUD:定义好 Mapper 接口后,只需要继承BaseMapper<T>接口即可获得通用的增删改查功能,无需编写任何接口方法与配置文件 条件构造器:通过EntityWrapper<T>(实体包装.....

hudeyong926的专栏 1万+

mybatis-generator爬坑

第一坑: 问题:mapper接口和mapper.xml代码生成后只有insert和selectAll方法和sql 解决:发现自己在设计表的时候没有设置主键导致,加上主键就解决问题了。 第二坑未爬出: 问题:生成实体和xml格式不正确,太恶心了让我还得修改一遍,修改不好还得修改错,如下图: 解决:未解决,有解决方法可留言 技术的升级迭代只是为了淘汰那些不学习的人!!! ...

weixin_43681813的博客 137

myBatis +myBatis Plus

第一步:创建maven工程第二部:创建实体类和dao的接口user.java文件:实现Serializable接口?定义属性生成get、set、toStringIuserDao.java 接口实现方法 List serlect();第三步:创建Mybatis的主配置文件SqlMapConifg.xml文件</</</</</</</第四步:创建映射配置文件IUserDao.xml文件</</环境搭建的注意事项:实现自动提交事务(不好)

sjdjh19920910的博客 201

MyBatis代码生成器深度解析与实战指南

ORM框架是现代Java开发中处理数据库操作的核心技术,MyBatis作为主流ORM框架之一,通过XML或注解方式实现SQL与Java对象的映射。MyBatis Generator(MBG)是其官方提供的代码生成工具,基于数据库表结构自动生成实体类、Mapper接口和XML映射文件,大幅提升CRUD开发效率。在微服务架构和敏捷开发场景下,MBG能确保代码规范统一,减少人工编写基础代码的错误率。通过配置文件和插件扩展,开发者可以灵活控制生成逻辑,特别适合表结构频繁变更的初期开发阶段。结合Lombok等工具链使

weixin_32075843的博客 142

MyBatis面试核心要点与实战解析

MyBatis作为Java生态中广泛使用的ORM框架,其核心原理与工程实践是开发者必须掌握的关键技术。从架构设计来看,MyBatis通过SqlSessionFactory、Executor等核心组件实现了高效的数据库操作,采用动态SQL机制(OGNL表达式与XML标签)灵活构建查询语句。在性能优化方面,一级缓存与二级缓存的合理配置能显著提升系统吞吐量,而插件开发机制(基于责任链模式)则支持分页、慢SQL监控等扩展功能。实际开发中,与Spring框架的深度整合(事务管理、连接池配置)及生产级问题排查(N+1查

weixin_34127717的博客 448

Spring Boot项目MyBatis依赖配置与核心配置详解

在Java企业级应用开发中,ORM框架是连接应用与数据库的关键技术层,它通过对象关系映射原理,将数据库操作抽象为面向对象的方法调用,从而提升开发效率并降低SQL维护成本。MyBatis作为一款半自动化的持久层框架,因其灵活的SQL编写能力和与Spring生态的无缝集成,在工程实践中被广泛采用。其技术价值在于平衡了开发便捷性与SQL可控性,尤其适用于需要复杂查询优化的场景。在Spring Boot项目中,通过引入mybatis-spring-boot-starter依赖,开发者可以快速完成数据源配置、Mapp

weixin_30216561的博客 353
上一篇: python升级pip失败的最终解决办法
下一篇: 【转】Mysql 如何设置字段自动获取当前时间
程序员青戈
程序员青戈 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 3万+粉丝 250原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员青戈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值