因为项目框架hibernate里的hibernate.hbm2ddl.auto属性设置为create(为了使得开发人员只关注于实体类而不必去关心数据库设计。。。),所以我们每次部署项目的时候都会把数据库生成的表全删除了然后根据实体类生成数据表,这样就需要在maven项目写一个测试类来初始化项目需要的一些基础数据,如用户、权限、资源、字典等。因为maven在构建到特定的生命周期阶段的时候会通过插件来执行JUnit或者TestNG的测试用例,这个插件就是maven-surefire-plugin(这是需要配置的,当然也可以禁止去执行测试类,甚至禁止编译测试类),需要了解的请学习相关maven文档,或者参考http://blog.csdn.net/sin90lzc/article/details/7543262。
考虑到上述因素,那么我就在src/test/java文件夹下新建一个测试类,那么这个测试类就会在clean install时候会执行,那么在这个时候执行数据初始化是合适的。因为初始化数据来自于sql脚本,所以我得读取sql脚本的内容并解析成相关的sql语句通过java的jdbc执行sql语句。那就开始做吧。不多说,上代码:
考虑到上述因素,那么我就在src/test/java文件夹下新建一个测试类,那么这个测试类就会在clean install时候会执行,那么在这个时候执行数据初始化是合适的。因为初始化数据来自于sql脚本,所以我得读取sql脚本的内容并解析成相关的sql语句通过java的jdbc执行sql语句。那就开始做吧。不多说,上代码:
1
package
com.infopatent.juangetljc.core;
2
3 import java.io.BufferedReader;
4 import java.io.FileInputStream;
5 import java.io.InputStream;
6 import java.sql.Connection;
7 import java.sql.DriverManager;
8 import java.sql.SQLException;
9 import java.sql.Statement;
10 import java.util.ArrayList;
11 import java.util.Arrays;
12 import java.util.List;
13
14 import org.junit.Test;
15
16 import junit.framework.TestCase;
17
18 public class InitDataTest extends TestCase {
19
20 private String url = " jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 " ;
21 private String driver = " com.mysql.jdbc.Driver " ;
22 private String userName = " root " ;
23 private String password = "" ;
24 String filePathIn = " F://workspace/juange-tljc/juange-tljc-core/src/test/java/basedata.sql " ;
25
2
3 import java.io.BufferedReader;
4 import java.io.FileInputStream;
5 import java.io.InputStream;
6 import java.sql.Connection;
7 import java.sql.DriverManager;
8 import java.sql.SQLException;
9 import java.sql.Statement;
10 import java.util.ArrayList;
11 import java.util.Arrays;
12 import java.util.List;
13
14 import org.junit.Test;
15
16 import junit.framework.TestCase;
17
18 public class InitDataTest extends TestCase {
19
20 private String url = " jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 " ;
21 private String driver = " com.mysql.jdbc.Driver " ;
22 private String userName = " root " ;
23 private String password = "" ;
24 String filePathIn = " F://workspace/juange-tljc/juange-tljc-core/src/test/java/basedata.sql " ;
25