MyBatis Generator (MBG),修改源码以适应 MySQL 大小写敏感配置的各种情况、适应分表时动态替换表名

Mybatis使用注意事项-1 Mybatis使用注意事项-1 根据项目需求构建pojo , mapper , service ,serviceImp ,和 controller,为了方便梳理业务上下级调用关系,推荐先安装插件Free Mybatis plugin 这个插件可以轻松找出Mapper与 相关sql文的对应关系,点击箭头,可自动跳转至对应sql文所在的xml文件。 同样点击XML文件中的箭头,可找出这段SQL对应的Mapper接口 说白了,mybatis主要作用于数据库和Mapper中间,通过XM... 阅读详情

本文对应的项目

本文实现方式是修改 MyBatis Generator 源码,最新的实现方式是通过 MyBatis Generator 扩展来实现,点击前往。

通过本项目,可以学到的知识点

  1. 可以理解使用MBG的大致流程。
  2. 本文中用到的MBG配置可以作为一个标准配置的参考。
  3. spring boot 2.1.1 获取 application.yml 配置信息,项目【create-table-property】是一个很好的参考。
  4. 通过MBG如何生成dal与model项目。
    • 生成的代码,绝大部分可直接使用,比如简单的增、删、改、查。
    • 对应数据库表的实体类,一张表一个实体类,可用于在各层传递基于表数据的业务数据。
  5. 通过 IDEA 管理多项目。
    • 获取项目源码,用 IDEA 导入的时候,指向根目录的 pom.xml 即可。

先了解一下 lower_case_table_names 参数

官方文档:Identifier Case Sensitivity

  1. lower_case_table_names是mysql一个大小写敏感设置的属性,此参数不可以动态修改,必须重启数据库。
  2. unix,linux下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2。

参数说明

  • lower_case_table_names=0 表名存储为给定的大小写。比较时:区分大小写。大小写敏感(Unix,Linux默认)。

创建的库表将原样保存在磁盘上。如create database TeSt;将会创建一个TeSt的目录,create table AbCCC …将会原样生成AbCCC.frm。SQL语句也会原样解析。

  • lower_case_table_names=1 表名存储为小写。比较时:不区分大小写。大小写不敏感(Windows默认)。

创建的库表时,MySQL将所有的库表名转换成小写存储在磁盘上。SQL语句同样会将库表名转换成小写。如需要查询以前创建的Test_table(生成Test_table.frm文件),即便执行select * from Test_table,也会被转换成select * from test_table,致使报错表不存在。

  • lower_case_table_names=2 表名存储为给定的大小写。比较时:小写。

创建的库表将原样保存在磁盘上。但SQL语句将库表名转换成小写。

不适用场景

如果开发环境、生产环境均配置成1或者2,则本文中有关大小写敏感的修改都是无意义的。

但是如果分库时依赖表名替换,则又是适用的,见以下【适用场景】中的场景二。

适用场景

最终目标:MBG 生成的xml文件中的sql脚本的表名,保持与对应表名在建表时的大小写一致,保持大小写敏感(表名可在MBG需要的配置文件中配置,以该配置为准)。这样可以适应以上lower_case_table_names的三种配置值。

为了达到以上目标,运行生成表配置内容的项目,一定要连接参数lower_case_table_names配置为0或者2的数据库服务器,并且是配置为0或者2之后才创建的数据表,否则,生成的表配置内容的表名,是以全部小写为基准的,并非驼峰式命名法。表配置内容生成好之后,重新生成 mapper 时连接的数据库服务器的lower_case_table_names配置值,对生成结果没有影响。

场景一

  1. 其中有数据库服务器被设置成大小写不敏感(比如阿里云的云数据库,截至目前2018年12月9号,还不支持配置成大小写敏感),即 lower_case_table_names=1,且该参数不能修改。
  2. 为了统一命名规范使用驼峰式命名法,包括:数据库名、数据库表名、数据库字段名、编程语言。这样的话,可以控制lower_case_table_names的linux服务器,就可以将该参数设置为0,即大小写敏感。
  3. 用 MGB 生成的 Mapper 类名,以及 xml 文件中的表名,需要与创建表名时的原始大小写一致,以适应在lower_case_table_names=0(linux)或者lower_case_table_names=2(windows)的情况。

当然,读到这里,你可能会觉得奇怪,数据库的库名、表名、字段名,业界都是用下划线分开的,其余字母全是小写,所以,该参数被配置成什么都不需要关心。

如果你也这么认为,那么,本文对你是没有价值的。

本文要解决的问题是,数据库的库名、表名、字段名,需要保持跟 Java 的编码规范一致的场景。如果都统一成一种编码规则,比如统一用驼峰式命名法,那么,不用在两种编码习惯上切换,可以提高编码效率和减少不必要的麻烦,且继续往下看。

场景二

  • 分表,利用MyBatis插件,根据业务规则,对表名进行动态替换。
  • 如erpTrade表分成了120个表,那么在某一次业务操作中,需要将erpTrade替换成erpTrade_xyz,其中xyz为从001到120的其中一个数字,则需要将MBG生成的xml里sql脚本中的表名用 `(左上角数字键1左边、Tab键上边、Esc键下边的键)引起来。

将会分享我的基于 MyBatis 插件分库分表项目。

需求场景

  1. 首先,我项目的 Java 代码规范是变量命名应用驼峰式命名法(Camel-Case)。数据库表名及字段名,则用下划线命名法(即用下划线分隔不同单词)。
  2. 我用 MBG 生成的代码,通过配置可以将下划线去掉,同时将下划线后的第一个字母转为大写,这样是符合驼峰式命名法的。
  3. 但是,问题来了。我们项目前后端分离,前端调用 Restful Api,在传递的参数中难免需要以表名来定义对象,而以字段名作为对象的属性来传递参数,而 Java 写的 Api 在接收参数时,是用 Pojo 来跟前端传的参数匹配的。
  4. 这样有两个问题,前端在传参数的时候需要将表名和字段名由下划线命名法转为驼峰式命名法,Java 代码也以同样的方式定义对应的类名以及属性字段,在这个过程中,容易出错,相对直接 copy 表名及字段名,需要做额外的工作,而且前后端都有。
  5. 如果数据库表名和字段名本身就是驼峰式命名法的话,写代码的时候直接 copy 表名或字段名,这样既不容易出错,还能节省时间。说干就干,改!表名及字段名遵循驼峰式命名法。
  6. 这样做的目的无非是让大家能偷偷懒,还减少出错的概率,同时也轻松的达到了统一代码规范的目的。
  7. 在windows环境下,如果遇到lower_case_table_names=1或者该参数未配置(未配置的时候默认为1),运行MBG,生成的sql脚本,全是小写,需要花费额外时间来解决环境问题。
  8. 为了一劳永逸,有了本文和对应的项目。
  9. 随着业务发展,到了需要分库分表的时候,本文所解决的问题,更是不可或缺。

解决办法

  1. 怎么破?查了很多资料,也看了官方文档,都没有找到相应的配置,也就是说,保持数据库表名大小写来生成对应的类和 mapper 文件,是不能通过配置来解决的。
  2. 只能看源码了。思路是:一步步跟踪,找到了真正取数据库表名的地方。
  3. 虽然过程比较痛苦,但是达到目的之后,还是小有成就感的。
  4. 其实改动很少,只是找到要改的地方才是关键。就象平时改 Bug 一样,修改可能很小,但是找到要修改的地方才是最花时间和精力的,每每这个时候,就非常渴求得力的测试人才。

废话少说,下面切入正题。

关于 MBG (MyBatis Generator)

笔者写这篇文章的时候,Release 最新版本是1.3.5(2016年九月7号发布),该版本已经足够满足本文提到的需求了,作者主导的项目均采用该版本。

  1. 下载地址:MyBatis Generator Release 1.3.5
  2. 官方文档

关于 MBG 的介绍,看官网文档足够了,本文的重点是修改源代码,让 MBG 在生成的代码里,对应的类和 mapper 文件保持与对应的表名大小写不变。

备注,实现方式已经改为通过扩展来解决问题了,不过,如果需要研究一下源码,还是有必要往下读的。

作为研究,作者去mybatis/generator 官方 github 下载了最新版 V1.3.7(2018年7月5号发布),用最新版重新操作了一遍。

下载的源码文件是generator-mybatis-generator-1.3.7.zip,解压之后,找到目录 generator-mybatis-generator-1.3.7\core\mybatis-generator-core,这个目录就是我们需要的源码目录。该目录下,只保留 src 目录和 pom.xml,其余删除。

用 IDEA 导入项目,如果依赖下载很慢,建议添加阿里云仓库,在 pom.xml,倒数第二行</scm>后面、最后一行</project>前面,插入以下内容:

  <repositories>
    <repository>
      <id>maven-ali</id>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
    </repository>
  </repositories>

修改源码

才下操作,均针对最新版 v1.3.7。

一共需要修改 org.mybatis.generator.api.IntrospectedTable 这个类的两个方法。

    /**
     * Gets the fully qualified table name at runtime.
     *
     * @return the fully qualified table name at runtime
     */
    public String getFullyQualifiedTableNameAtRuntime() {
//        return internalAttributes
//                .get(InternalAttribute.ATTR_FULLY_QUALIFIED_TABLE_NAME_AT_RUNTIME);
        return this.getTableConfiguration().getTableName();
    }

    /**
     * Gets the aliased fully qualified table name at runtime.
     *
     * @return the aliased fully qualified table name at runtime
     */
    public String getAliasedFullyQualifiedTableNameAtRuntime() {
//        return internalAttributes
//                .get(InternalAttribute.ATTR_ALIASED_FULLY_QUALIFIED_TABLE_NAME_AT_RUNTIME);
        return this.getTableConfiguration().getTableName();
    }

这两个方法里面的前两行注释了的代码是官方的,最后那行代码是修改之后的。

生成对应的类和 mapper 文件

对应的测试数据库脚本

create schema if not exists mbg default character set utf8;

use mbg;
set names utf8;

drop table if exists erpTrade;
create table erpTrade
(
   tradeID              int not null auto_increment,
   tid                  bigint comment '订单号',
   shopID               int,
   memberID             bigint comment '针对的会员ID,同步会员时反写',
   buyerNick            national varchar(50),
   sellerID             bigint comment '店铺用户,主旺旺 ID',
   primary key (tradeID)
);

drop table if exists erpEnterpriseMember;
create table erpEnterpriseMember
(
   memberID             bigint not null auto_increment,
   shopID               int,
   nickname             varchar(50) comment '会员昵称',
   realName             varchar(50) comment '真实姓名',
   sex                  int comment '性别 1.男 2.女 3.未知',
   created              int,
   modified             int,
   primary key (memberID)
);

drop table if exists erpShopConfig;
create table erpShopConfig
(
   ID                   int not null auto_increment,
   shopID               int,
   mobile               varchar(200) comment '接收短信手机号,多个以逗号隔开',
   email                varchar(200) comment '邮箱地址,多个以逗号隔开',
   isNotifyBalanceLess  int comment '当短信账户余额为X条时,系统免费发送短信提醒您及时充值。',
   balanceLessValue     int comment '余额不足提醒值',
   isNotifyBeforeExpire int comment '是否发送软件快到期提醒',
   beforeDaysExpire     int comment '软件快到期提醒时间,提前天数',
   created              int,
   modified             int,
   primary key (ID)
);

生成表配置信息的 Java 工具类

MBG 基于一个 xml 配置文件,在这个配置文件里,有跟表相关的配置,为了达到我的需求,需要一张表对应一行配置信息,所以,我写了一个类来自动生成,这样,在增减表,或者别的项目里面,可以简单的运行这个类来生成,减少手工劳动。

更详细的,请看:https://github.com/uncleAndyChen/mybatis-generator/tree/master/create-table-property

MBG需要的配置文件比较全面的,在工作中实际用到的文件内容如下:

<?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="mysql-connector-java-5.1.31.jar"/>
    <!--<context id="DB2Tables" targetRuntime="MyBatis3">-->
    <!--如果你希望不生成和Example查询有关的内容,那么可以按照如下进行配置:-->
    <!--<context id="DB2Tables" targetRuntime="MyBatis3Impl">-->
    <context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
    <!--<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">-->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.0.130:3306/mbg?useUnivalue=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;failOverReadOnly=false"
                        userId="root" password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--生成Model类存放位置-->
        <javaModelGenerator targetPackage="mybatis.generator.model.entity" targetProject="mybatis.generator.model/src/main/java/">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="mappers\original" targetProject="mybatis.generator.dal\src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao类存放位置
        当type=XMLMAPPER时,会生成一个XXX.xml文件内有各种sql语句,是mapper的实现。
        当type=ANNOTATEDMAPPER时,会直接在mapper接口上添加注释。
        -->
        <!--
        http://blog.youkuaiyun.com/qq_27376871/article/details/51360638
        MyBatis3:
        ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件
        MIXEDMAPPER:XML和注解的混合形式,(上面这种情况中的)SqlProvider注解方法会被XML替代。
        XMLMAPPER:所有的方法都在XML中,接口调用依赖XML文件。
        MyBatis3Simple:
        ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件
        XMLMAPPER:所有的方法都在XML中,接口调用依赖XML文件。
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="mybatis.generator.dal.mapper"
                             targetProject="mybatis.generator.dal/src/main/java/">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!--生成对应表及类名-->
        <table tableName="erpEnterpriseMember" domainObjectName="EnterpriseMember"><property name="useActualColumnNames" value="true"/><generatedKey identity="true" type="post" column="memberID" sqlStatement="Mysql"/></table>
        <table tableName="erpShopConfig" domainObjectName="ShopConfig"><property name="useActualColumnNames" value="true"/><generatedKey identity="true" type="post" column="ID" sqlStatement="Mysql"/></table>
        <table tableName="erpTrade" domainObjectName="erpTrade"><property name="useActualColumnNames" value="true"/><generatedKey identity="true" type="post" column="tradeID" sqlStatement="Mysql"/></table>
    </context>
</generatorConfiguration>

运行 MBG

  1. 以 IntelliJ IDEA 为例
    为了测试,除了从官网下载的 MBG 源码外,另外添加了两个模块。
    先创建一个空项目,然后导入 MBG,添加两个测试模块,或者直接从码云下载我的代码。注意模块的包路径要与配置文件里的一致,否则会提示路径找不到。
    创建一个空项目

    导入模块

直接运行源码

新建一个启动应用,选 MBG 下的 ShellRunner 作为启动入口

按下图所示,在参数一栏写:-configfile generatorConfig.xml -overwrite,选 mybatis-generator-1.3.5 模块

接下来,应该知道如何运行或者调试了吧。

生成 jar 包,一次生成,随处运行

  1. 将 MBG 打包成 jar 包,把该 jar 包和 mysql-connector-java-5.1.31.jar、generatorConfig.xml 一起放到项目的根目录下,在 dos 窗口,或者 IDEA 的 Terminal 窗口直接运行下面的命令。
java -Dfile.encoding=UTF-8 -cp mybatis-generator-1.3.5.jar org.mybatis.generator.api.ShellRunner -configfile generatorConfig.xml -overwrite
  1. 推荐用这种方式。这样不需要将 MBG 项目添加到公司的具体项目,而且通常这项工作由某一个人做就行了,其它项目组成员,可以不知道该工具的存在。

下面是生成 MBG jar 包的步骤

按 Ctrl+Alt+Shift+s,进入项目设置界面

生成 MBG jar 包第一步,配置

生成 MBG jar 包第二步,Build Artifacts…

注意事项

  1. 当表结构发生变化时,需要重新运行 MBG 生成新的代码,所以,生成的代码,不能有修改行为,否则下次重新生成后,改过的代码会被覆盖。
  2. 重新生成时,*Mapper.xml 文件会被改写错,MBG 没有重新生成该文件,而是改写,这种改写有问题,还没来得及深究。
  3. 针对第2点的问题,我的解决办法是,重新生成前,将对应的 *Mapper.xml 删掉。如果只生成一张表的代码,则只删除对应的 mapper 文件即可,Pojo 文件重新生成后是正确的,不用管。
  4. 也可以用下面的脚本简单粗暴的删除全部 xml 文件。反正会重新生成,如果文件内容跟原来一致,不会产生新的 svn/git 提交。需要注意的是,下面的脚本我是在 idea 的 Terminal 窗口执行的,这里的命令语法请保持 linux 风格。这样更省事儿,推荐这种方案,这样不用每次变更某一张表的时候找到对应的表配置,也不用单独去删除对应的 mapper.xml 文件,只要把所有表的配置都操持有效(即不要注释掉)就行,省时省力!
# 注意:*Mapper.xml 文件,每次重新生成都需要先删除,否则部分内容会重复生成,导致错误
del/f/s/q C:\workspace\mbg\mybatis-generator\demo-domain-dal\src\main\java\demo\domain\dal\mapper\original\*.*
del/f/s/q C:\workspace\mbg\mybatis-generator\demo-domain-model\src\main\java\demo\domain\model\entity\*.*

del/f/s/q C:\workspace\mbg\mybatis-generator\demo-domain-dal\src\main\resources\mappers\original\*.xml
java -Dfile.encoding=UTF-8 -cp mybatis-generator-1.3.7.jar;mybatis-generator-enhance.jar org.mybatis.generator.api.ShellRunner -configfile generatorConfig.xml -overwrite

关于作者

图神经网络实战——利用节点回归预测网络流量 在机器学习中,回归指的是对连续值的预测。通常与分类形成鲜明对比,分类的目标是找到正确的类别(即离散值,而非连续值)。在图数据中,分类和回归分别对应于节点分类和节点回归。在本节中,我们将尝试预测每个节点的连续值,而非分类变量。 阅读详情

相关推荐

保姆级教程:手把手教你用Jacquard V2数据集训练机器人抓取模型(附完整代码)

本文提供了一份详细的保姆级教程,手把手教你使用Jacquard V2数据集训练机器人抓取模型。从环境配置、数据准备到模型架构设计、训练优化和实际部署,全程解析并附完整代码,帮助开发者快速掌握视觉抓取技术。

weixin_29031057的博客 314

记一下MyBatis中,SQL语句大小写符号的问题

昨天用MyBatis对oracle数据库进行分页查找,IDE一直有异常,但是没提示,于是把SQL语句和配置都检查了几遍,配置没错,SQL放DEVELOPER也能运行,但是就是有异常,于是突然想到之前也遇到过的一个问题,就是在MyBatis配置文件中对大小写&lt;&gt;符号敏感,得用转义字符代替。 转义字符                      &amp;lt;         ...

ss的博客 6977

修改注册表导致开机时电脑显示“无法登陆到你的账户”的问题解决方案

1.问题描述:开机电脑显示“无法登陆到你的账户:通常可以通过从你的账户注销,然后重新登陆来解决问题,如果不立即注销,你创建的任何文件或进行的任何更改都将会丢失。” 2.问题原因:想要修改cmd中的用户名(红色部分),修改了注册表,重启时出现问题。 3.问题解决: win+R输入cmd,确定进入注册表界面,将下面的地址复制进地址栏(你也可以自己按目录查找),双击ProfileImage...

qq_33835957的博客 7万+

Mybatis或Mybatis-plus操作MYSQL数据库设置大小写不敏感

使用场景 在Oracle数据库中,我们常常将数据表字段写为大写;有一天我们做数据库迁移,将Oracle数据库改为Mysql数据库时往往直接使用原来的字段名(大写字段)并将Oracle中的特殊关键字转为Mysql关键字就可以了,这个时候就会出现一个问题,实体类与数据库列名无法匹配。 方法1:使用@TableField("列名")将字段与列名对应起来 package com.test.Model; import com.baomidou.mybatisplus.annotation.TableFie

ITKnight 1万+

CVAT自动标注避坑指南:从nuctl安装到YOLOv5模型部署的完整流程

本文详细介绍了在CVAT中部署YOLOv5自动标注功能的完整流程与避坑指南。重点解决了从nuctl工具安装、项目创建时因网络问题导致的镜像拉取失败,到最终模型函数部署与CVAT集成的关键步骤。针对国内网络环境,提供了实用的镜像替换方案,帮助用户顺利完成基于CPU的自动化标注环境搭建。

pytorch8learner的博客 229

传感器:MQ-5燃气模块测量燃气值(底部附代码)

本篇文章介绍使用MQ-5燃气模块测量燃气值,CPU还是选择单片机,MQ-5主要使用的技术为ADC,燃气对于单片机来说是模拟信号,需要转换为数字信号,再经过相关计算公式将燃气模拟值转换成对应的燃气数值,便于人们方便查看。例如家庭使用燃气模块测量燃气值,如果燃气值超过一定的范围,可以外设一个报警装置,保证家庭的生命安全。(1)ADC(analog to digital converter)即模数转换器,它可以将模拟信号转换为数字信号。按照其转换原理主要分为逐次逼近型、双积分型、电压频率转换型三种。STM32F1

Mr_zhang1911116的博客 1万+

mybatisplus使用lambdaqQueryWrapper查询postgresql的数据库字段大小写敏感问题的一种简单解决思路

问题背景:postgresql数据库的查询大小写敏感,且大写字段必须用“xxx”,即双引号,小写不需要。mybatis查询如果不做处理,sql执行会自动转为小写。

qq_46093826的博客 3988

ESP32 DW1000 UWB 室内定位系统

详细介绍ESP32 DW1000 UWB 室内定位系统的设计演示demo。

DT程序员的博客 1662

mybatis实战教程(mybatis in action),mybatis入门到精通

转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) 写在这个系列前面的话: 以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来

kutekute的专栏 17万+

微信小程序 - 解决web-view嵌套H5网页白屏问题,将h5网页嵌套在webview页面出现无法加载一片空白,详解微信小程序<web-view>页面跳转出现白屏情况(无论本地还是线上H5都能解决)

微信小程序解决web-view打开网页在手机上出现白屏的问题,小程序web-view嵌套H5项目白屏问题分析及解决,使用web-view组件加载H5网页链接后白屏情况,小程序嵌套的h5网页中跳转页面时也有可能出现白屏问题,嵌套webview页面时,出现白屏,WebView 加载不出网页,微信小程序<web-view>页面跳转出现白屏解决方法,解决WebView白屏空白,H5内嵌第三方小程序打开白屏,微信小程序嵌入h5页面加载空白,微信小程序web-view跳转h5白屏,解决微信小程序web-view打开网页

🏆 前端领域优质创作者 1万+

有限元分析-静力学分析-与分析解对比-——以阶梯轴的静力分析为例——静态结构分析

150mm,a=300mm{a=300mm}a=300mm,b=200mm{b=200mm}b=200mm,L=1000mm{L=1000mm}L=1000mm,F=300kN{F=300kN}F=300kN,材料为45,弹性模量E=2.1e11Pa{E=2.1e11Pa}E=2.1e11Pa,泊松比v=0.28{v=0.28}v=0.28,屈服应力δs=355MPa{δ_s=355MPa}δ。使用line body生成的模型,可以选择自动划分网格的,WB会将以梁单元将其划分完成,例如图2所示。

qq_15963745的博客 66

【替换屏蔽敏感字词】

屏蔽,替换,敏感字词,后端处理

haimianjun123的博客 1213

YOLOv13|损失函数优化篇:Focal EIOU 保持良好性能的同时,提供更高效的计算和更稳定的训练过程-包源码

Focal IoU与EIoU:目标检测中的损失函数优化 摘要:本文深入探讨了目标检测中两种重要的边界框回归损失函数优化方法。Focal IoU借鉴Focal Loss思想,通过(1-IoU)^γ因子调节损失权重,使模型更关注难样本(低IoU预测框),有效解决了传统IoU Loss对难易样本权重相同的问题。EIoU则在CIoU基础上改进,通过简化长宽比计算、分离宽高损失项,提升了计算效率和训练稳定性。两种方法分别从样本权重分配和损失函数结构优化角度,显著提升了目标检测性能,为实际应用提供了更高效的解决方案。文

FJN110的博客 1864

第三章 mybatis-generator + mysql/ptsql

用了mybatis-generator,我就不再想用注解了,这与我之前说的注解与XML并用是矛盾的,知识嘛,本来就是多元化的,今天喜欢这个,明天喜欢那个,哈哈,看了mybatis-generator下边的作用,再决定用哪个。 mybatis-generator的作用: 生成model、mapper接口、mapper对应的xml文件(包含基本的增删该查与条件不定式的插入、更新和查询) 在项...

weixin_34177064的博客 578

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MyBatis Generator (MBG),写扩展类,以适应 MySQL 大小写敏感配置的各种情况、适应分表时动态替换表名

运行本工程生成表配置内容,一定要连接参数lower_case_table_names配置为0或者2的数据库服务器,并且是配置为0或者2之后才创建的数据表,否则,生成的表配置内容的表名,全是小写的,并非驼峰式命名法。表配置内容生成好之后,重新生成 mapper 时连接的数据库服务器的lower_case_table_names配置值,对生成结果没有影响。 本文对应的完整项目 github: https://github.com/uncleAndyChen/mybatis-generator gitee: ht

斯旺森swanson 507

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

mybatis返回map大小写的问题,配置全局转大小写

在使用mybatis的时候,经常会用到resultType=“map” 返回map类型的数据。发现mysql默认返回的都是小写的, oracle返回的都是大写 如果项目换数据库了, 会导致有很大的工作量, 所以我就全局配置了转大写 配置一共分为2步 第一步: 需要重写map的包装器将Map的key全部转换为大写 package com.qymj.mybatis.objectwrapperfactory; import java.util.Map; import org.apache.ibati

許先生的博客 7954

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mysql中处理大小写敏感问题

1. 首先解释下 utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的;bin 是二进制, a 和 A 会别区别对待.例如你运行:SELECT * FROM table WHERE txt = 'a'那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_ge

madman_trio的博客 641

mysql大小写 mybatis_Mybatis的Select语句变量是大小写不敏感的吗?

今天遇到一个狗血的问题使用springmvc+mybatis的时候如一个SELECT语句如此<select id="list" parameterType="java.util.Map" resultMap="user">SELECT*FROMuser<trim prefix="where" prefixOverrides="AND"><if test="userna...

weixin_39520979的博客 1766

MyBatis Generator(MBG)PostgreSQL使用说明 区分大小写敏感

PostgreSQL使用说明区分大小写敏感 PostgreSQL对所有数据库标识符(表名,模式名,列名等)区分大小写。此外,PostgreSQL对所有小写字母的所有标识符都有不同的偏好。如果您使用PostgreSQL的所有小写标识符,那么MyBatis Generator将找到表并写入正确的SQL,而无需额外考虑。如果您使用混合的套件或大写标识符,则需要...

weixin_34245749的博客 675

MybatisPlus处理pg数据库大小写敏感

最近在使用MybatisPlus操作pg数据库发现,pg数据库的schema区分大小写的,查询时候必须加上双引号,否则就会找不到这个表 1.使用@TableName注解配置表名和schema @TableName(value = “fin_idx_budget”,schema=“RESULT_SCHEMA”) 运行之后报如下错误:(原因是pg数据库对大小写比较敏感,这时就需要对schema进行转义) Cause: org.postgresql.util.PSQLException: 错误: 关系 \"res

weixin_40689822的博客 5498

mybatis中数据库的配置 (mysql8.0)

mybatis中数据库的配置 (mysql8.0) <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments d

一个菜鸡的博客 1607

mybatis generator中的字段大小写生成问题

mybatis generator插件中,如果 mysql数据表中的字段是用下划线划分的(个人一般都是喜欢这么创建表的字段,如:company_name),那么生成的Vo中会自动对应为companyName;但是有时候表不是你设计的,全是这种格式的carBrandName或者是carbrandname,在生成对应的Vo时会是这样:carbrandname解决:在generatorConfig.xm...

wang20y8的博客 1万+

SSM框架——使用MyBatis Generator自动创建代码

这两天需要用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件。这样可以省去很多的功夫,将生成的代码copy到项目工程中即可。            使用自动生成有很多方式,可以在eclipse中安装插件,

czl8897098的博客 600

Mybatis之Mapper.xml映射MySql表大小写问题

今天遇到的小问题,记录下:Mybatis之Mapper.xml映射MySql表大小写问题数据库中两条数据:Mapper.xml 用得select *; 使用 selectMap 方法查询时,mapKey 参数,大小应与Mapper.xml中select结果集字段一致,否则导致结果错误,得到了个空key,值为数据库最后一条数据。 保证key字段一致,结果正确...

nae_90的博客 1575

MyBatis Generator PostgreSQL逆向生成 区分大小写敏感

MyBatis Generator PostgreSQL逆向生成 区分大小写敏感 PostgreSQL使用说明区分大小写敏感 PostgreSQL对所有数据库标识符(表名,模式名,列名等)区分大小写。此外,PostgreSQL对所有小写字母的所有标识符都有不同的偏好。如果您使用PostgreSQL的所有小写标识符,那么MyBatis Generator将找到表并写入正确的SQL,而无需额外考虑。如...

weixin_42051852的博客 1017

MyBatis对于Oracle数据库与MySQL数据库查询返回Map中大小写问题优化

此方法适用于数据库切换时resultType直接返回Map实现类key值大小写问题。如果是返回resultMap则不受影响

Acfunwei 2049
上一篇: Java EE 7 Hands-on Lab,target VM: HTTP 404 Not Found。原因及问题解决
下一篇: spring 官方例子->宠物医院,数据库改成 MySQL,数据库连接池改成 druid
uncleAndyChen
博客等级 码龄22年 32粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值