最近创建了一个Maven Archetype工程, 基于此archetype可以创建一个空白的spring + mybatis 工程,包含了一个DemoUser CRUD的示例以及单元测试(junit + Mockito)示例代码。省的每次copy一份已有的工程然后进行各种删除修改。

过程中遇到的问题及解决方法记录于下

问题一

DemoUser.xml文件中的代码

insert into demo_user (mobile,nick) values (#{mobile},#{nick})

执行mvn archetype:generate生成的代码

insert into demo_user (mobile,nick) values (#mobile,#nick)

即中括号被去除了。

解决方法

src/main/resources/archetype-resources/pom.xml头部添加

#set( $P = '#' )

然后在DemoUser.xml中如下处理

insert into demo_user (mobile,nick) values (${P}{mobile},${P}{nick})

即对#号进行转义

问题二

指定的artifactIdfoo.bar 想让生成的DemoUser.xmlsrc/main/resources/sql/bar/目录下

解决方法

pom.xml头部添加

#set ($artifactId = "${artifactId}")
#set ($index = $artifactId.indexOf('.'))
#set ($index = $index + 1)
#set ($appName = $artifactId.substring($index))

artifactId得后半部分赋值给appName变量
archetype-metadata.xml中添加

<requiredProperty key="appName">
       <defaultValue>${appName}</defaultValue>
</requiredProperty>

修改目录名为

src/main/resources/sql/__appName__/DemoUser.xml

这样处理生成的目录结构为

│   │   └── resources
│   │       └── sql
│   │           └── bar
│   │               └── DemoUser.xml

git地址

https://github.com/zhugw/mybatis.archetype/


zhuguowei2
825 声望26 粉丝

引用和评论

0 条评论