Mybatis Generator: Qual é a melhor maneira de separar “arquivos gerados automaticamente” e “arquivos editados manualmente”

Eu estou em um projeto que usa tantoMybatis (para persistir java no banco de dados) eGerador Mybatis (para gerar automaticamente os arquivos xml do mapeador e as interfaces java a partir de um esquema de banco de dados).

O gerador Mybatis faz um bom trabalho gerando os arquivos necessários para a operação básica do crud.

Contexto

Para algumas das tabelas / classes, precisaremos de mais "coisas" (consultas de código, etc) do que o "material bruto" gerado pela ferramenta Gerador de MyBatis.

Existe alguma maneira de ter "o melhor dos dois mundos", ou seja, usar geração automática, bem como "código personalizado". Como você separa e estrutura os "arquivos editados à mão" e "arquivos gerados automaticamente".

Proposta

Eu estava pensando sobre o seguinte, ou seja, para a mesa "Foo"

Gerado automaticamente

FooCrudMapper.xmlinterface FooCrud.java

(onde "Crud" significa "Create Read Update Delete")

Mão editada

FooMapper.xmlinterface Foo estende FooCrud

A noção: se o esquema for alterado, você poderá sempre autogerar com segurança os arquivos xml e .java "Crud" sem eliminar nenhuma alteração personalizada.

Questões

O mybatis leria corretamente este cenário, ou seja, esse mapeador executaria corretamente o 'código crud' gerado automaticamente?

FooMapper fooMapper = sqlSession.getMapper (FooMapper.class);

Qual abordagem você recomenda?

Edit 1: * Nosso projeto de db usa uma 'tabela principal' ("elemento") com outras tabelas 'estendendo' essa tabela e adicionando atributos extras (chave compartilhada). Eu olhei para docs e a fonte concluiu que eu não posso usar o Mybatis Generator em conjunto com tal 'extensão' sem qualquer edição manual:

ou seja, isso não funciona. -ElementMapper estende "ElementCrudMapper" -FooMapper.xml estende tanto "ElementCrudMapper" e "FooCrudMapper"

Obrigado a todos!