thinkphp 驼峰怎么映射数据库表名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp 驼峰怎么映射数据库表名相关的知识,希望对你有一定的参考价值。

参考技术A 例如:
数据库前缀_数据表名称
=
think_test
映射数据库表名:控制器
TestController
模型
TestModel
数据库前缀_数据表名称_名称
=
think_test_tester
映射数据库表名:控制器
TestTesterController
模型
TestTesterModel
参考技术B 前提是你数据源配置正确.
映射文件中:
注意看class属性:
name是你的model类(包名+类名)
table是你数据库里的表名
catalog是你的数据库名

......

Mybatis Generator 未将表名映射到驼峰式大小写

【中文标题】Mybatis Generator 未将表名映射到驼峰式大小写【英文标题】:Table name not mapped to camel case by Mybatis Generator 【发布时间】:2018-07-30 18:33:02 【问题描述】:

我试用了 Mybatis Generator,效果很好。但是,即使列名正确映射为驼峰式大小写,文件名(Mapper.xml、Client 和 Model)也不遵循驼峰式大小写。

因此,例如,表 TIPO_SERVICO 被映射到 Tiposervico/TipoServicoMapper 而不是 TipoServico/TipoServicoMapper。

我查看了 Mybatis Generator 文档,没有找到与表名大小写相关的属性。

附:我的数据库是 Oracle。

我的 generatorConfig.xml:

<?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>
    <context id="context" targetRuntime="MyBatis3Simple">
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection userId="[USER]" password="[PASSWORD]" driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@[IP]:1521:[ENV]">
            <property name="remarksReporting" value="true"/>
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <javaModelGenerator targetPackage="com.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="com.mapper" targetProject="src/main/resources/META-INF">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <javaClientGenerator targetPackage="com.mapper" type="XMLMAPPER" targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <table schema="patr" tableName="%" enableCountByExample="true" enableDeleteByExample="false"
               enableSelectByExample="true" enableUpdateByExample="false" >
            <domainObjectRenamingRule searchString="^Scm" replaceString="" />
        </table>
    </context>
</generatorConfiguration>

【问题讨论】:

【参考方案1】:

为什么不手动配置呢?添加 domainObjectName

的属性
    <table schema="patr" tableName="TIPO_SERVICO" domainObjectName ="TipoServico" enableCountByExample="true" enableDeleteByExample="false"
           enableSelectByExample="true" enableUpdateByExample="false" >
        <domainObjectRenamingRule searchString="^Scm" replaceString="" />
    </table>

【讨论】:

我不使用 domainObjectName 因为我用它来为几十个表生成代码。但是,在我评论 domainObjectRenamingRule 之后,骆驼案例命名又开始起作用了。【参考方案2】:

骆驼案例命名在评论 domainObjectRenamingRule 后再次起作用。

【讨论】:

以上是关于thinkphp 驼峰怎么映射数据库表名的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5 怎么进行跨库关联查询

ThinkPHP6.0 模型创建方法

thinkphp6模型

thinkphp model 必须对应数据库表名

ThinkPHP如果表名有下划线需要用Model应该怎么做?

thinkPHP 远程数据库和远程连接数据库表名大小写混合