您的位置:首页 > 其它

Mybatis逆向工程

2016-06-27 12:14 441 查看
使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件。

 

1    第一步:mapper生成配置文件:

在generatorConfig.xml中配置mapper生成的详细信息,注意改下几点:

 

1、  添加要生成的数据库表

2、  po文件所在包路径

3、  mapper文件所在包路径

 

配置文件如下:

详见generatorSqlmapCustom工程

 

2    第二步:使用java类生成mapper文件:

 

Public void generator()
throws Exception{
      List<String>warnings =
new
ArrayList<String>();
      boolean overwrite =
true;
      FileconfigFile =
new
File("generatorConfig.xml");

      ConfigurationParsercp =
newConfigurationParser(warnings);
      Configurationconfig = cp.parseConfiguration(configFile);
      DefaultShellCallbackcallback = new DefaultShellCallback(overwrite);
      MyBatisGeneratormyBatisGenerator =
new MyBatisGenerator(config,
           
callback,warnings);
      myBatisGenerator.generate(null);
   }
   Public static voidmain(String[] args)
throws Exception {
      try {
         GeneratorSqlmapgeneratorSqlmap =
new GeneratorSqlmap();
         generatorSqlmap.generator();
      }catch(Exception e) {
         e.printStackTrace();
      }
}
 

 

 

3    第三步:拷贝生成的mapper文件到工程中指定的目录中

3.1  Mapper.xml

Mapper.xml的文件拷贝至mapper目录内

3.2  Mapper.java

Mapper.java的文件拷贝至mapper 目录内

 

 

注意:mapper xml文件和mapper.java文件在一个目录内且文件名相同。

 

 

3.3  第四步Mapper接口测试

 

学会使用mapper自动生成的增、删、改、查方法。

 

//删除符合条件的记录
int deleteByExample(UserExample example);
//根据主键删除
int deleteByPrimaryKey(String id);
//插入对象所有字段
int insert(User record);
//插入对象不为空的字段
int insertSelective(User record);
//自定义查询条件查询结果集
List<User>selectByExample(UserExample example);
//根据主键查询
UserselectByPrimaryKey(Stringid);
//根据主键将对象中不为空的值更新至数据库
int updateByPrimaryKeySelective(User record);
//根据主键将对象中所有字段的值更新至数据库
int updateByPrimaryKey(User record);
 

 

4    逆向工程注意事项

4.1  Mapper文件内容不覆盖而是追加

XXXMapper.xml文件已经存在时,如果进行重新生成则mapper.xml文件内容不被覆盖而是进行内容追加,结果导致mybatis解析失败。

解决方法:删除原来已经生成的mapper xml文件再进行生成。

Mybatis自动生成的po及mapper.java文件不是内容而是直接覆盖没有此问题。

 

4.2  Table schema问题

下边是关于针对oracle数据库表生成代码的schema问题:

 

Schma即数据库模式,oracle中一个用户对应一个schema,可以理解为用户就是schema。

当Oralce数据库存在多个schema可以访问相同的表名时,使用mybatis生成该表的mapper.xml将会出现mapper.xml内容重复的问题,结果导致mybatis解析错误。

解决方法:在table中填写schema,如下:

<table schema="XXXX" tableName=" " >

XXXX即为一个schema的名称,生成后将mapper.xml的schema前缀批量去掉,如果不去掉当oracle用户变更了sql语句将查询失败。

快捷操作方式:mapper.xml文件中批量替换:“from XXXX.”为空

 

Oracle查询对象的schema可从dba_objects中查询,如下:

select* from dba_objects
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息