mybatis generator or怎么识别大小写

mybatis中select语句字段大小写问题 - 代码分享 - 开源中国社区
当前访客身份:游客 [
当前位置:
相关的代码(58)
擅长语言Top3:
13回/15350阅/1顶/59收藏&
擅长语言Top3:
5回/11976阅/3顶/17收藏&
擅长语言Top3:
17回/10876阅/1顶/13收藏&
擅长语言Top3:
8回/9057阅/1顶/24收藏&
擅长语言Top3:
13回/8782阅/2顶/14收藏&
擅长语言Top3:
2回/7036阅/2顶/16收藏&
擅长语言Top3:
7回/6770阅/1顶/40收藏&
擅长语言Top3:
5回/6517阅/1顶/4收藏&
擅长语言Top3:
14回/6342阅/1顶/25收藏&
擅长语言Top3:
0回/5414阅/2顶/3收藏&
擅长语言Top3:
3回/5282阅/1顶/14收藏&
擅长语言Top3:
3回/5254阅/2顶/19收藏&
擅长语言Top3:
0回/4911阅/2顶/13收藏&
擅长语言Top3:
21回/4176阅/2顶/22收藏&
擅长语言Top3:
11回/4125阅/2顶/74收藏&
擅长语言Top3:
0回/4003阅/1顶/8收藏&
擅长语言Top3:
10回/3723阅/1顶/15收藏&
擅长语言Top3:
17回/3503阅/2顶/41收藏&
擅长语言Top3:
6回/3499阅/2顶/29收藏&
擅长语言Top3:
4回/3278阅/1顶/7收藏&
擅长语言Top3:
15回/3030阅/3顶/28收藏&
擅长语言Top3:
14回/2817阅/1顶/16收藏&
擅长语言Top3:
6回/2543阅/1顶/2收藏&
擅长语言Top3:
2回/2338阅/1顶/16收藏&
擅长语言Top3:
4回/2165阅/2顶/6收藏&
擅长语言Top3:
2回/1828阅/2顶/11收藏&
擅长语言Top3:
12回/1587阅/1顶/13收藏&
擅长语言Top3:
8回/1540阅/5顶/13收藏&
擅长语言Top3:
0回/1518阅/1顶/6收藏&
擅长语言Top3:
4回/1463阅/2顶/10收藏&
开源从代码分享开始
TOP40活跃贡献者
红薯[1418]
UlricQi...[5]
相信你自己[22]
歇蹩虎子[4]
罗盛力[18]
dimdim...[8]
丛俊龙[11]
疯狂的流浪[286]
fengbin...[24]
TSC9526...[7]
我是海贼...[5]
卖蜡笔的...[33]
鹏行天下[4]
jiuchen...[2]
王爵nic...[8]
excepit...[6]
one_pie...[11]
燃烧方式[2]
高得顺[13]
捏造的信仰[8]
_vince...[7]
wangxuw...[5]
C_Liwan...[2]
JoeyBlu...[9]
DarcyYe...[2]
hephec...[16]
Vae丶l...[5]
Atlas_q...[4]
本月热门代码语言TOP5ntellij IDEA 14 作为Java IDE 神器,接触后发现,非常好用,对它爱不释手,打算离开eclipse和myeclipse,投入Intellij IDEA的怀抱。
&&&& 然而在使用的过程中会发现Intellij IDEA也有一些不尽如意的地方,难免会有些不爽:Intellij IDEA 的插件库远不及eclipse的丰富。 mybatis-generator在eclipse中有专门的插件,而没有开发出Intellij IDEA能够使用的插件。
&&& 不过不用灰心,如果你的项目是使用maven组织的,那么我们可以在Intellij IDEA中使用 mybatis-generator-maven-plugin插件来完成MyBatis model 和Mapper文件的自动生成。
STEP 0.在Intellij IDEA创建maven项目(本过程比较简单,略)
STEP 1. 在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件
&finalName&xxx&/finalName&
&groupId&org.mybatis.generator&/groupId&
&artifactId&mybatis-generator-maven-plugin&/artifactId&
&version&1.3.2&/version&
&configuration&
&verbose&true&/verbose&
&overwrite&true&/overwrite&
&/configuration&
&/plugins&
STEP 2. 在maven项目下的src/main/resources 目录下建立名为 generatorConfig.xml的配置文件,作为mybatis-generator-maven-plugin 插件的执行目标,模板如下:
1 &?xml version="1.0" encoding="UTF-8"?&
2 &!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"&
5 &generatorConfiguration&
&!--导入属性配置 --&
&properties resource="generator.properties"&&/properties&
&!--指定特定数据库的jdbc驱动jar包的位置 --&
&classPathEntry location="${jdbc.driverLocation}"/&
&context id="default" targetRuntime="MyBatis3"&
&!-- optional,旨在创建class时,对注释进行控制 --&
&commentGenerator&
&property name="suppressDate" value="true" /&
&/commentGenerator&
&!--jdbc的数据库连接 --&
&jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}" password="${jdbc.password}"&
&/jdbcConnection&
&!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--&
&javaTypeResolver &
&property name="forceBigDecimals" value="false" /&
&/javaTypeResolver&
&!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
targetPackage
指定生成的model生成所在的包名
targetProject
指定在该项目下所在的路径
&javaModelGenerator targetPackage="org.louis.hometutor.po" targetProject="src/main/java"&
&!-- 是否对model添加 构造函数 --&
&property name="constructorBased" value="true"/&
&!-- 是否允许子包,即targetPackage.schemaName.tableName --&
&property name="enableSubPackages" value="false"/&
&!-- 建立的Model对象是否 不可改变
即生成的Model对象不会有 setter方法,只有构造方法 --&
&property name="immutable" value="true"/&
&!-- 给Model添加一个父类 --&
&property name="rootClass" value="com.foo.louis.Hello"/&
&!-- 是否对类CHAR类型的列的数据进行trim操作 --&
&property name="trimStrings" value="true"/&
&/javaModelGenerator&
&!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --&
&sqlMapGenerator targetPackage="org.louis.hometutor.domain" targetProject="src/main/java"&
&property name="enableSubPackages" value="false"/&
&/sqlMapGenerator&
&!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
&javaClientGenerator targetPackage="com.foo.tourist.dao" targetProject="src/main/java" type="MIXEDMAPPER"&
&property name="enableSubPackages" value=""/&
定义Maper.java 源代码中的ByExample() 方法的可视性,可选的值有:
注意:如果 targetRuntime="MyBatis3",此参数被忽略
&property name="exampleMethodVisibility" value=""/&
方法名计数器
Important note: this property is ignored if the target runtime is MyBatis3.
&property name="methodNameCalculator" value=""/&
为生成的接口添加父接口
&property name="rootInterface" value=""/&
&/javaClientGenerator&
&table tableName="lession" schema="louis"&
&!-- optional
, only for mybatis3 runtime
自动生成的键值(identity,或者序列值)
如果指定此元素,MBG将会生成&selectKey&元素,然后将此元素插入到SQL Map的&insert& 元素之中
sqlStatement 的语句将会返回新的值
如果是一个自增主键的话,你可以使用预定义的语句,或者添加自定义的SQL语句. 预定义的值如下:
Cloudscape
This will translate to: VALUES IDENTITY_VAL_LOCAL()
VALUES IDENTITY_VAL_LOCAL()
SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
VALUES IDENTITY_VAL_LOCAL()
CALL IDENTITY()
select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
SELECT LAST_INSERT_ID()
SqlServer:
SELECT SCOPE_IDENTITY()
SELECT @@IDENTITY
This will configure MBG to generate code for MyBatis3 suport of JDBC standard generated keys. This is a database independent method of obtaining the value from identity columns.
identity: 自增主键
If true, then the column is flagged as an identity column and the generated &selectKey& element will be placed after the insert (for an identity column). If false, then the generated &selectKey& will be placed before the insert (typically for a sequence).
&generatedKey column="" sqlStatement="" identity="" type=""/&
&!-- optional.
列的命名规则:
MBG使用 &columnRenamingRule& 元素在计算列名的对应 名称之前,先对列名进行重命名,
作用:一般需要对BUSI_CLIENT_NO 前的BUSI_进行过滤
支持正在表达式
searchString 表示要被换掉的字符串
replaceString 则是要换成的字符串,默认情况下为空字符串,可选
&columnRenamingRule searchString="" replaceString=""/&
&!-- optional.告诉 MBG 忽略某一列
column,需要忽略的列
delimitedColumnName:true ,匹配column的值和数据库列的名称 大小写完全匹配,false 忽略大小写匹配
是否限定表的列名,即固定表列在Model中的名称
&ignoreColumn column="PLAN_ID"
delimitedColumnName="true" /&
&!--optional.覆盖MBG对Model 的生成规则
column: 数据库的列名
javaType: 对应的Java数据类型的完全限定名
在必要的时候可以覆盖由JavaTypeResolver计算得到的java数据类型. For some databases, this is necessary to handle "odd" database types (e.g. MySql's unsigned bigint type should be mapped to java.lang.Object).
jdbcType:该列的JDBC数据类型(INTEGER, DECIMAL, NUMERIC, VARCHAR, etc.),该列可以覆盖由JavaTypeResolver计算得到的Jdbc类型,对某些数据库而言,对于处理特定的JDBC 驱动癖好 很有必要(e.g. DB2's LONGVARCHAR type should be mapped to VARCHAR for iBATIS).
typeHandler:
&columnOverride column="" javaType=""
jdbcType="" typeHandler=""
delimitedColumnName="" /&
&/context&
145 &/generatorConfiguration&
这里使用了外置的配置文件generator.properties,可以将一下属性配置到properties文件之中,增加配置的灵活性:
1 jdbc.driverLocation=D:\\maven\\com\\oracle\\ojdbc14\\10.2.0.4.0\\ojdbc14-10.2.0.4.0.jar
2 jdbc.driverClass=oracle.jdbc.driver.OracleDriver
3 jdbc.connectionURL=jdbc:oracle:thin:@//localhost:1521/XE
4 jdbc.userId=LOUIS
5 jdbc.password=123456
项目目录如下:
STEP 3. 在Intellij IDEA添加一个&Run运行&选项,使用maven运行mybatis-generator-maven-plugin插件 :
之后弹出运行配置框,为当前配置配置一个名称,这里其名为"generator",然后在 &Command line& 选项中输入&mybatis-generator:generate& -e&
这里加了&-e &选项是为了让该插件输出详细信息,这样可以帮助我们定位问题。
如果添加成功,则会在run 选项中有&generator& 选项,如下:
点击运行,然后不出意外的话,会在控制台输出:
1 C:\Java\jdk1.7.0_71\bin\java -Dmaven.home=D:\software\apache-maven-3.0.5-bin -Dclassworlds.conf=D:\software\apache-maven-3.0.5-bin\bin\m2.conf -Didea.launcher.port=7533 "-Didea.launcher.bin.path=D:\applications\JetBrains\IntelliJ IDEA 14.0.2\bin" -Dfile.encoding=UTF-8 -classpath "D:\software\apache-maven-3.0.5-bin\boot\plexus-classworlds-2.4.D:\applications\JetBrains\IntelliJ IDEA 14.0.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher -Didea.version=14.0.2 -s D:\software\apache-maven-3.0.5-bin\conf\settings.xml mybatis-generator:generate -e
2 [INFO] Error stacktraces are turned on.
3 [INFO] Scanning for projects...
5 [INFO] ------------------------------------------------------------------------
6 [INFO] Building hometutor Maven Webapp 1.0-SNAPSHOT
7 [INFO] ------------------------------------------------------------------------
9 [INFO] --- mybatis-generator-maven-plugin:1.3.2:generate (default-cli) @ hometutor ---
10 [INFO] Connecting to the Database
11 [INFO] Introspecting table louis.lession
12 log4j:WARN No appenders could be found for logger (org.mybatis.generator.internal.db.DatabaseIntrospector).
13 log4j:WARN Please initialize the log4j system properly.
14 log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
15 [INFO] Generating Example class for table LOUIS.LESSION
16 [INFO] Generating Record class for table LOUIS.LESSION
17 [INFO] Generating Mapper Interface for table LOUIS.LESSION
18 [INFO] Generating SQL Map for table LOUIS.LESSION
19 [INFO] Saving file LessionMapper.xml
20 [INFO] Saving file LessionExample.java
21 [INFO] Saving file Lession.java
22 [INFO] Saving file LessionMapper.java
23 [WARNING] Root class com.foo.louis.Hello cannot be loaded, checking for member overrides is disabled for this class
24 [WARNING] Existing file E:\sources\tutor\src\main\java\org\louis\hometutor\po\Lession.java was overwritten
25 [WARNING] Existing file E:\sources\tutor\src\main\java\com\foo\tourist\dao\LessionMapper.java was overwritten
26 [INFO] ------------------------------------------------------------------------
27 [INFO] BUILD SUCCESS
28 [INFO] ------------------------------------------------------------------------
29 [INFO] Total time: 2.334s
30 [INFO] Finished at: Tue Jan 27 12:04:08 CST 2015
31 [INFO] Final Memory: 8M/107M
32 [INFO] ------------------------------------------------------------------------
34 Process finished with exit code 0
好,看到BUILD SUCCESS,则大功告成,如果有错误的话,由于添加了-e 选项,会把具体的详细错误信息打印出来的,根据错误信息修改即可
阅读(...) 评论()mybatis中select语句字段大小写问题
我用的mybatis3.0.5
如果你用的mybatis3.0.5的话就会存在这个问题(其他版本我不知道),我以解决,改版后的mybatis-3.0.5.jar提供下载,替换项目中就好!
//org.apache.ibatis.executor.resultset.FastResultSetHandler中第298行代码, mybatis3.0.5源代码为:
protected void loadMappedAndUnmappedColumnNames(ResultSet rs, ResultMap resultMap, List&String& mappedColumnNames, List&String& unmappedColumnNames) throws SQLException {
mappedColumnNames.clear();
unmappedColumnNames.clear();
final ResultSetMetaData rsmd = rs.getMetaData();
final int columnCount = rsmd.getColumnCount();
final Set&String& mappedColumns = resultMap.getMappedColumns();
for (int i = 1; i &= columnC i++) {
final String columnName = configuration.isUseColumnLabel() ? rsmd.getColumnLabel(i) : rsmd.getColumnName(i);
final String upperColumnName = columnName.toUpperCase(Locale.ENGLISH);
if (mappedColumns.contains(upperColumnName)) {
mappedColumnNames.add(upperColumnName);
mappedColumnNames.add(columnName);
unmappedColumnNames.add(upperColumnName);
unmappedColumnNames.add(columnName);
修改后的代码为:
protected void loadMappedAndUnmappedColumnNames(ResultSet rs, ResultMap resultMap, List&String& mappedColumnNames, List&String& unmappedColumnNames) throws SQLException { &&& mappedColumnNames.clear(); &&& unmappedColumnNames.clear(); &&& final ResultSetMetaData rsmd = rs.getMetaData(); &&& final int columnCount = rsmd.getColumnCount(); &&& final Set&String& mappedColumns = resultMap.getMappedColumns(); &&& for (int i = 1; i &= columnC i++) { &&&&& final String columnName = configuration.isUseColumnLabel() ? rsmd.getColumnLabel(i) : rsmd.getColumnName(i); &&&&& //final String upperColumnName = columnName.toUpperCase(Locale.ENGLISH); &&&&& if (mappedColumns.contains(upperColumnName)) { &&&&&&& //mappedColumnNames.add(upperColumnName); &&&&&&& mappedColumnNames.add(columnName); &&&&& } else { &&&&&&& //unmappedColumnNames.add(upperColumnName); &&&&&&& unmappedColumnNames.add(columnName); &&&&& } &&& } & }
&提供编译好的jar替换就可以 下载地址:
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区mybatis怎么配置才能使查询出来的map key为小写的_百度知道
mybatis怎么配置才能使查询出来的map key为小写的
0我也遇到了这个问题,也是代码处理的 Map&String, String& cateXml = cateXmls.get(i); Map&String, String& tempMap=new LinkedCaseInsensitiveMap&String&(); tempMap.putAll(cateXml); cateXml=tempM 用的是LinkedCaseInsensitiveMap这个sping提供的key大小写不敏感的类处理了一下。
其他类似问题
为您推荐:
mybatis的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Paste_Image.png
同学们有福了,花了一些时间,重新整理了一个最完整的Mybatis Generator(简称MBG)的最完整配置文件,带详解,再也不用去看EN的User Guide了;
&?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&
&!-- 可以用于加载配置项或者配置文件,在整个配置文件中就可以使用${propertyKey}的方式来引用配置项
resource:配置资源加载地址,使用resource,MBG从classpath开始找,比如com/myproject/generatorConfig.properties
url:配置资源加载地质,使用URL的方式,比如file:///C:/myfolder/generatorConfig.properties.
注意,两个属性只能选址一个;
另外,如果使用了mybatis-generator-maven-plugin,那么在pom.xml中定义的properties都可以直接在generatorConfig.xml中使用
&properties resource="" url="" /&
&!-- 在MBG工作的时候,需要额外加载的依赖包
location属性指明加载jar/zip包的全路径
&classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" /&
context:生成一组对象的环境
id:必选,上下文id,用于在生成错误时提示
defaultModelType:指定生成对象的样式
1,conditional:类似hierarchical;
2,flat:所有内容(主键,blob)等全部生成在一个对象中;
3,hierarchical:主键生成一个XXKey对象(key class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class)
targetRuntime:
1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample;
2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample;
introspectedColumnImpl:类全限定名,用于扩展MBG
&context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple" &
&!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;
一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖
&property name="autoDelimitKeywords" value="false"/&
&!-- 生成的Java文件的编码 --&
&property name="javaFileEncoding" value="UTF-8"/&
&!-- 格式化java代码 --&
&property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/&
&!-- 格式化XML代码 --&
&property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/&
&!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; --&
&property name="beginningDelimiter" value="`"/&
&property name="endingDelimiter" value="`"/&
&!-- 必须要有的,使用这个配置链接数据库
@TODO:是否可以扩展
&jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///pss" userId="root" password="admin"&
&!-- 这里面可以设置property属性,每一个property属性都设置到配置的Driver上 --&
&/jdbcConnection&
&!-- java类型处理器
用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;
&javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl"&
true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
false:默认,
scale&0;length&18:使用BigD
scale=0;length[10,18]:使用Long;
scale=0;length[5,9]:使用Integer;
scale=0;length&5:使用Short;
&property name="forceBigDecimals" value="false"/&
&/javaTypeResolver&
&!-- java模型创建器,是必须要的元素
负责:1,key类(见context的defaultModelType);2,java类;3,查询类
targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;
targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录
&javaModelGenerator targetPackage="com._520it.mybatis.domain" targetProject="src/main/java"&
for MyBatis3/MyBatis3Simple
自动为每一个生成的类创建一个构造方法,构造方法包含了所有的field;而不是使用setter;
&property name="constructorBased" value="false"/&
&!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false --&
&property name="enableSubPackages" value="true"/&
&!-- for MyBatis3 / MyBatis3Simple
是否创建一个不可变的类,如果为true,
那么MBG会创建一个没有setter方法的类,取而代之的是类似constructorBased的类
&property name="immutable" value="false"/&
&!-- 设置一个根对象,
如果设置了这个根对象,那么生成的keyClass或者recordClass会继承这个类;在Table的rootClass属性中可以覆盖该选项
注意:如果在key class或者record class中有root class相同的属性,MBG就不会重新生成这些属性了,包括:
1,属性名相同,类型相同,有相同的getter/setter方法;
&property name="rootClass" value="com._520it.mybatis.domain.BaseDomain"/&
&!-- 设置是否在getter方法中,对String类型字段调用trim()方法 --&
&property name="trimStrings" value="true"/&
&/javaModelGenerator&
&!-- 生成SQL map的XML文件生成器,
注意,在Mybatis3之后,我们可以使用mapper.xml文件+Mapper接口(或者不用mapper接口),
或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的话,这个元素就必须配置
targetPackage/targetProject:同javaModelGenerator
&sqlMapGenerator targetPackage="com._520it.mybatis.mapper" targetProject="src/main/resources"&
&!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false --&
&property name="enableSubPackages" value="true"/&
&/sqlMapGenerator&
&!-- 对于mybatis来说,即生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口
targetPackage/targetProject:同javaModelGenerator
type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
&javaClientGenerator targetPackage="com._520it.mybatis.mapper" type="ANNOTATEDMAPPER" targetProject="src/main/java"&
&!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false --&
&property name="enableSubPackages" value="true"/&
&!-- 可以为所有生成的接口添加一个父接口,但是MBG只负责生成,不负责检查
&property name="rootInterface" value=""/&
&/javaClientGenerator&
&!-- 选择一个table来生成相关文件,可以有一个或多个table,必须要有table元素
选择的table会生成一下文件:
1,SQL map文件
2,生成一个主键类;
3,除了BLOB和主键的其他字段的类;
4,包含BLOB的类;
5,一个用户生成动态查询的条件类(selectByExample, deleteByExample),可选;
6,Mapper接口(可选)
tableName(必要):要生成对象的表名;
注意:大小写敏感问题。正常情况下,MBG会自动的去识别数据库标识符的大小写敏感度,在一般情况下,MBG会
根据设置的schema,catalog或tablename去查询数据表,按照下面的流程:
1,如果schema,catalog或tablename中有空格,那么设置的是什么格式,就精确的使用指定的大小写格式去查询;
2,否则,如果数据库的标识符使用大写的,那么MBG自动把表名变成大写再查找;
3,否则,如果数据库的标识符使用小写的,那么MBG自动把表名变成小写再查找;
4,否则,使用指定的大小写格式查询;
另外的,如果在创建表的时候,使用的""把数据库对象规定大小写,就算数据库标识符是使用的大写,在这种情况下也会使用给定的大小写来创建表名;
这个时候,请设置delimitIdentifiers="true"即可保留大小写格式;
1,schema:数据库的schema;
2,catalog:数据库的catalog;
3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
4,domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
5,enableInsert(默认true):指定是否生成insert语句;
6,enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
8,enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);
9,enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);
10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
13,modelType:参考context元素的defaultModelType,相当于覆盖;
14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
15,delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性
注意,table里面很多参数都是对javaModelGenerator,context等元素的默认属性的一个复写;
&table tableName="userinfo" &
&!-- 参考 javaModelGenerator 的 constructorBased属性--&
&property name="constructorBased" value="false"/&
&!-- 默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema; --&
&property name="ignoreQualifiersAtRuntime" value="false"/&
&!-- 参考 javaModelGenerator 的 immutable 属性 --&
&property name="immutable" value="false"/&
&!-- 指定是否只生成domain类,如果设置为true,只生成domain类,如果还配置了sqlMapGenerator,那么在mapper XML文件中,只生成resultMap元素 --&
&property name="modelOnly" value="false"/&
&!-- 参考 javaModelGenerator 的 rootClass 属性
&property name="rootClass" value=""/&
&!-- 参考javaClientGenerator 的
rootInterface 属性
&property name="rootInterface" value=""/&
&!-- 如果设置了runtimeCatalog,那么在生成的SQL中,使用该指定的catalog,而不是table元素上的catalog
&property name="runtimeCatalog" value=""/&
&!-- 如果设置了runtimeSchema,那么在生成的SQL中,使用该指定的schema,而不是table元素上的schema
&property name="runtimeSchema" value=""/&
&!-- 如果设置了runtimeTableName,那么在生成的SQL中,使用该指定的tablename,而不是table元素上的tablename
&property name="runtimeTableName" value=""/&
&!-- 注意,该属性只针对MyBatis3Simple有用;
如果选择的runtime是MyBatis3Simple,那么会生成一个SelectAll方法,如果指定了selectAllOrderByClause,那么会在该SQL中添加指定的这个order条件;
&property name="selectAllOrderByClause" value="age desc,username asc"/&
&!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate --&
&property name="useActualColumnNames" value="false"/&
&!-- generatedKey用于生成生成主键的方法,
如果设置了该元素,MBG会在生成的&insert&元素中生成一条正确的&selectKey&元素,该元素可选
column:主键的列名;
sqlStatement:要生成的selectKey语句,有以下可选项:
Cloudscape:相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
:相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
:相当于selectKey的SQL为:SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
:相当于selectKey的SQL为:VALUES IDENTITY_VAL_LOCAL()
:相当于selectKey的SQL为:CALL IDENTITY()
:相当于selectKey的SQL为:select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
:相当于selectKey的SQL为:SELECT LAST_INSERT_ID()
SqlServer :相当于selectKey的SQL为:SELECT SCOPE_IDENTITY()
:相当于selectKey的SQL为:SELECT @@IDENTITY
:相当于在生成的insert元素上添加useGeneratedKeys="true"和keyProperty属性
&generatedKey column="" sqlStatement=""/&
该元素会在根据表中列名计算对象属性名之前先重命名列名,非常适合用于表中的列都有公用的前缀字符串的时候,
比如列名为:CUST_ID,CUST_NAME,CUST_EMAIL,CUST_ADDRESS等;
那么就可以设置searchString为"^CUST_",并使用空白替换,那么生成的Customer对象中的属性名称就不是
custId,custName等,而是先被替换为ID,NAME,EMAIL,然后变成属性:id,name,email;
注意,MBG是使用java.util.regex.Matcher.replaceAll来替换searchString和replaceString的,
如果使用了columnOverride元素,该属性无效;
&columnRenamingRule searchString="" replaceString=""/&
&!-- 用来修改表中某个列的属性,MBG会使用修改后的列来生成domain的属性;
column:要重新设置的列名;
注意,一个table元素中可以有多个columnOverride元素哈~
&columnOverride column="username"&
&!-- 使用property属性来指定列要生成的属性名称 --&
&property name="property" value="userName"/&
&!-- javaType用于指定生成的domain的属性类型,使用类型的全限定名
&property name="javaType" value=""/&
&!-- jdbcType用于指定该列的JDBC类型
&property name="jdbcType" value=""/&
&!-- typeHandler 用于指定该列使用到的TypeHandler,如果要指定,配置类型处理器的全限定名
注意,mybatis中,不会生成到mybatis-config.xml中的typeHandler
只会生成类似:where id = #{id,jdbcType=BIGINT,typeHandler=com._520it.mybatis.MyTypeHandler}的参数描述
&property name="jdbcType" value=""/&
&!-- 参考table元素的delimitAllColumns配置,默认为false
&property name="delimitedColumnName" value=""/&
&/columnOverride&
&!-- ignoreColumn设置一个MGB忽略的列,如果设置了改列,那么在生成的domain中,生成的SQL中,都不会有该列出现
column:指定要忽略的列的名字;
delimitedColumnName:参考table元素的delimitAllColumns配置,默认为false
注意,一个table元素中可以有多个ignoreColumn元素
&ignoreColumn column="deptId" delimitedColumnName=""/&
&/context&
&/generatorConfiguration&
好了,就到这里了,可以作为一个工具文档查看。
文/小码哥Java学院(简书作者)原文链接:/p/e09d著作权归作者所有,转载请联系作者获得授权,并标注&简书作者&。
阅读(...) 评论()

我要回帖

更多关于 mybatisgenerator 的文章

 

随机推荐