最近创建了一个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})
即对#
号进行转义
问题二
指定的artifactId
为foo.bar
想让生成的DemoUser.xml
在src/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
中添加
${appName}
修改目录名为
src/main/resources/sql/__appName__/DemoUser.xml
这样处理生成的目录结构为
│ │ └── resources
│ │ └── sql
│ │ └── bar
│ │ └── DemoUser.xml
git地址
https://github.com/zhugw/mybatis.archetype/