mybatis generator为什么会生成withblobs
展开全部
1.设置mapper文件重复生成时覆盖旧的文件
将GeneratedXmlFile中isMergeable设置为false,实现方式:修改IntrospectedTableMyBatis3Impl.getGeneratedXmlFiles方法构造xml文件时传入参数false。
GeneratedXmlFile gxf = new GeneratedXmlFile(document,
getMyBatis3XmlMapperFileName(), getMyBatis3XmlMapperPackage(),
context.getSqlMapGeneratorConfiguration().getTargetProject(),
false, context.getXmlFormatter());
2.oracle主键生成方式直接将sql写在generatedKey的statement中。
3.控制是否生成PrimaryKeyClass
IntrospectedTable中的rules属性(接口Rules)中有三个方法:generatePrimaryKeyClass()、generateBaseRecordClass()、generateRecordWithBLOBsClass()控制是否生成三种Model文件。
mybatis提供了三种ModelType: HIERARCHICAL("hierarchical")、FLAT("flat"),CONDITIONAL("conditional");对应三种modelRule:HierarchicalModelRules、FlatModelRules、ConditionalModelRules。
通过在mybatis generator配置文件增加属性defaultModelType=“hierarchical”可以控制不生成PrimarykeyClass。
这种配置会导致只包含联合主键的表不能生成Model,可以通过修改HierarchicalModelRules方法中的generateBaseRecordClass()改为返回true,则可生成对应Model。
将GeneratedXmlFile中isMergeable设置为false,实现方式:修改IntrospectedTableMyBatis3Impl.getGeneratedXmlFiles方法构造xml文件时传入参数false。
GeneratedXmlFile gxf = new GeneratedXmlFile(document,
getMyBatis3XmlMapperFileName(), getMyBatis3XmlMapperPackage(),
context.getSqlMapGeneratorConfiguration().getTargetProject(),
false, context.getXmlFormatter());
2.oracle主键生成方式直接将sql写在generatedKey的statement中。
3.控制是否生成PrimaryKeyClass
IntrospectedTable中的rules属性(接口Rules)中有三个方法:generatePrimaryKeyClass()、generateBaseRecordClass()、generateRecordWithBLOBsClass()控制是否生成三种Model文件。
mybatis提供了三种ModelType: HIERARCHICAL("hierarchical")、FLAT("flat"),CONDITIONAL("conditional");对应三种modelRule:HierarchicalModelRules、FlatModelRules、ConditionalModelRules。
通过在mybatis generator配置文件增加属性defaultModelType=“hierarchical”可以控制不生成PrimarykeyClass。
这种配置会导致只包含联合主键的表不能生成Model,可以通过修改HierarchicalModelRules方法中的generateBaseRecordClass()改为返回true,则可生成对应Model。
展开全部
(萌新一枚,我也不是太确定)。。数据库里面对应的某一列属性,如果不是char,varchar常用字符类型,而是text大文本类型,就会针对该条属性的操作后追加WithBlobs,关于实际上使用,我目前还没有感到差别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本文将简要介绍怎样利用mybatis generator自动生成mybatis 的相关代码:
一、构建一个环境:
1. 首先创建一个表:
sql代码
create table pet (name varchar(20), owner varchar(20), species varchar(20), sex char(1), birth date, death date);
2. 然后注入数据
sql代码
insert into pet values('fluffy', 'harold', 'cat', 'f', '1993-02-04', null);
insert into pet values('claws', 'gwen', 'cat', 'm', '1994-03-17', null);
insert into pet values('buffy', 'harold', 'dog', 'f', '1989-05-13', null);
insert into pet values('fang', 'benny', 'dog', 'm', '1990-08-27', null);
insert into pet values('bowser', 'diane', 'dog', 'm', '1979-08-31', '1995-07-29');
insert into pet values('chirpy', 'gwen', 'bird', 'f', '1998-09-11', null);
insert into pet values('whistler', 'gwen', 'bird', null, '1997-12-09', null);
insert into pet values('slim', 'benny', 'snake', 'm', '1996-04-29', null);
注:这里的sql例子来自 http://dev.mysql.com/doc/refman/5.5/en/creating-tables.html
3. 在 mybatis 主页 http://code.google.com/p/mybatis / 上下载 mybatis mybatis -generator-core [本文使用的是 1.3.0 版本]。当然运行 mybatis -generator 生成的代码还需要下载 mybatis 的 jar 包[本例使用的是 3.0.2 版本],和相关其他数据库 的 jdbc [本文中使用的是mysql的jdbc] 。
二、运行 mybatis -generator
1. 要运行 generator ,需要给 generator 提供一个配置文件,指定其生成的其他数据库 的相关信息。 以下是一个示例:
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>
<classpathentry location="mysql-connector-java-5.1.6-bin.jar" />
<context id="db2tables" targetruntime="mybatis 3">
<commentgenerator>
<property name="suppressdate" value="true" />
</commentgenerator>
<jdbcconnection driverclass="com.mysql.jdbc.driver"
connectionurl="jdbc:mysql://localhost/test" userid="qgd" password ="123456">
</jdbcconnection>
<javatyperesolver>
<property name="forcebigdecimals" value="false" />
</javatyperesolver>
<javamodelgenerator targetpackage="test.model"
targetproject="../src/main/java">
<property name="enablesubpackages" value="true" />
<property name="trimstrings" value="true" />
</javamodelgenerator>
<sqlmapgenerator targetpackage="test.dao"
targetproject="../src/main/java">
<property name="enablesubpackages" value="true" />
</sqlmapgenerator>
<javaclientgenerator type="xmlmapper"
targetpackage="test.dao" targetproject="../src/main/java">
<property name="enablesubpackages" value="true" />
</javaclientgenerator>
<table tablename="pet" domainobjectname="pet">
</table>
</context>
</generatorconfiguration>
这个配置文件提供了 mybatis -generator所需要的参数信息:
* 其中classpathentry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了; * commentgenerator 是用来除去时间信息的,这在配合类似subversion的代码管理开发工具时使用很有效,因为可以减少没有必要的注释迁入; * jdbcconnection是指定的jdbc的连接信息; * javatyperesolver式类型转换的信息,这里并没有用到; * javamodelgenerator是模型的生成信息,这里将指定这些java model类的生成路径; * sqlmapgenerator是mybatis 的sqlmapper xml文件的生成信息,包括生成路径等; * javaclientgenerator是应用开发接口的生成信息; * table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。
2. mybatis -generator 有多种运行方式,最简单的就是命令行的方式,只需要指定相
此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
应的配置文件的路径即可:
java代码
java -jar mybatis -generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -overwrite
运行后生成的代码包括模型类 test.model.pet 和 test.model.petexample , test.dao.petmapper 接口以及其相对应的 xml 映射文件,在这里就不在赘述了。
三、使用 mybatis -generator 生成的代码
1. 现在我们要利用这些生成的代码,首先我们需要一个关于所有映射的配置文件。需要我们手写如下:【不知道为什么generator没有选择自动生成这个文件,毕竟这些信息generator都可以得到】
xml代码
<?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 default="development">
<environment id="development">
<transactionmanager type="jdbc" />
<datasource type="pooled">
<property name="driver" value="com.mysql.jdbc.driver" />
<property name="url" value="jdbc:mysql://localhost/test" />
<property name="username" value="qgd" />
<property name="password " value="123456" />
</datasource>
</environment>
</environments>
<mappers>
<mapper resource="test/dao/petmapper.xml" />
</mappers>
</configuration>
2. 另外还要使用然后我们还需要一个main示例开发方法 来调用这些已生成的代码:
java代码
package test;
import java.io.reader;
import java.util.list;
import org.apache.ibatis .io.resources;
import org.apache.ibatis .session.sqlsession;
import org.apache.ibatis .session.sqlsessionfactory;
import org.apache.ibatis .session.sqlsessionfactorybuilder;
import test.dao.petmapper;
import test.model.pet;
import test.model.petexample;
public class test {
public static void main(string[] args) throws exception {
string resource = "mapperconfig.xml";
reader reader = resources.getresourceasreader(resource);
sqlsessionfactory sqlmapper = new sqlsessionfactorybuilder().build(reader);
sqlsession sqlsession = sqlmapper.opensession();
petexample pet = new petexample();
pet.or().anddeathisnotnull();
try {
petmapper mapper = sqlsession.getmapper(petmapper.class);
list<pet> allrecords = mapper.selectbyexample(pet);
for (pet s : allrecords)
system.out.println(s);
} finally {
sqlsession.close();
}
}
}
这样就可以打印出相应的查询结果信息了。
四、小结
该示例的完整的eclipse工程见附件mybatis -generator-usage.zip,其中已经包含了示例需要使用的jar包。
本文中只是用到了mybatis -generator 的一部分功能,mybatis -generator 生成代码的方式还包括ant或maven脚本,或者直接使用java api生成;另外通过修改配置文件,generator还可以指定表的生成细节,并可以添加插件。其功能文档在generator的分发包的doc文件夹下有更详细的介绍。
这里使用的表示没有主键的表,针对有一个主键或多个主键的表,mybatis -generator的生成的内容也有所不同,感兴趣的读者可以自行试验一下。
搜索此文相关文章:Mybatis Generator生成代码
此文链接:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%83%AD/28621.shtml
转载请注明出处:Mybatis Generator生成代码 - 博客园
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询