Java web mybatis 實現項目初始化自動初始化數據庫(執行SQL文件)

 

在學習java web開發時    方便初始化數據庫

需要的jar包   mybatis-3.5.2.jar    commons-dbutils-1.6.jar


DBUtils.java

package com.me.utils;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.ibatis.io.Resources;

/*
 * 數據庫連接類
 * 		獲取db配置信息
 */
public class DBUtils {
	
	static String Driver;
 	static String Url;
 	static String User;
 	static String Password;
 	// 用來初始化數據庫的url
 	static String Url_init;
 	// 初始化數據庫的sqlFile
 	static String sqlFile;
	
	
	static {
		Properties prop = null;
		try {
			prop = Resources.getResourceAsProperties("com/me/utils/db.properties");
		} catch (IOException e) {
			e.printStackTrace();
		}
		// 獲取配置信息
		Driver = prop.getProperty("jdbc.driver");
		Url = prop.getProperty("jdbc.url");
		User = prop.getProperty("jdbc.username");
		Password = prop.getProperty("jdbc.password");
		sqlFile = prop.getProperty("sqlFile");
		
		// 獲取初始化數據庫的Url
		if(Url.length()!=0){
			getInitUrl();
		}else{
			System.out.println("獲取不到數據庫連接地址Url");
		}
		
		try {
			Class.forName(Driver);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 用來獲取數據庫連接
	 * @return
	 */
	public static Connection getCon(){
		
		Connection con = null;
		try {
			con = DriverManager.getConnection(Url, User, Password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
		
	}
    /**
	 * 獲取初始化數據庫的連接
	 * @param url_init
	 * @return
	 */
	public static Connection getInitCon() {
		Connection con = null;
		try {
			con = DriverManager.getConnection(Url_init, User, Password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
	//  拼接數據庫初始化連接Url
	private static String getInitUrl(){
		
		Url_init=Url.substring(0,Url.lastIndexOf("/")+1)+"mysql?useSSL=false";
		
		return Url_init;
	}

}

 


RunSqlScript.java

package com.me.utils;

import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;

/**
 * 數據庫初始化腳本
 * 		當服務器啓動的時候,執行一次初始化,初始化數據庫
 * @author Administrator
 *
 */
public class RunSqlScript extends HttpServlet{
	
	// 記得配置web.xml
	@Override
	public void init() throws ServletException {
		System.out.println("項目初始化開始,自動加載開始");
		// 初始化腳本
		run();
		System.out.println("項目初始化結束,自動加載結束");
	}
	
	// 數據庫初始化腳本
	public  void run(){
		System.out.println("======  數據庫初始化START   ======");
		
		//獲取初始化url地址、sql文件的路徑和數據庫連接 
		String Url_init = DBUtils.Url_init;
		String sqlFile = DBUtils.sqlFile;
		// System.out.println("Url_init:"+Url_init+"--sqlFile:"+sqlFile);
		Connection con = DBUtils.getInitCon();
		
		// mybatis 通過con獲取ScriptRunner對象
		ScriptRunner runner = new ScriptRunner(con);
		runner.setErrorLogWriter(null);
		runner.setLogWriter(null);
		
		try {
			// mybatis 讀取並執行sql文件
			Reader reader = Resources.getResourceAsReader(sqlFile);
			runner.runScript(reader);
			con.close();
		} catch (IOException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("====== 數據庫初始化SUCCESS  ======");
	}
	

}

 


db.properties

#驅動類名
jdbc.driver=com.mysql.jdbc.Driver

#數據庫連接		localhost
jdbc.url=jdbc:mysql://localhost:3306/membermg_plus?useSSL=false

#數據庫用戶名
jdbc.username=root

#數據庫密碼
jdbc.password=root

#sql腳本地址(class文件夾下)
sqlFile=com/me/utils/demo.sql

 


demo.sql

-- 會員管理系統		membermg_plus專用
-- 刪除數據庫,創建數據庫
drop database if exists membermg_plus;
create database if not exists membermg_plus;
use membermg_plus;



-- 創建管理表
drop table if exists mguser;
create table if not exists mguser(
	id int(10) not null auto_increment,
	username varchar(50) not null,
	password varchar(50) not null,
	userphone varchar(20) not null,
	primary key(id)
);

-- 導入數據
insert into mguser values(default,'1234','1234','12345678912');
insert into mguser values(default,'111','111','12345678912');
select * from mguser;


-- 創建會員表
drop table if exists hyuser;
create table if not exists hyuser(
	id int not null auto_increment,
	username varchar(50) not null,
	userphone varchar(20) not null,
	money  bigint(100) not null,
	primary key(id)
);

-- 導入數據
insert into hyuser values(default,'a','12345678912',1250);
insert into hyuser values(default,'aa','12345678912',1100);
insert into hyuser values(default,'aaa','12345678912',1500);
insert into hyuser values(default,'aaaa','12345678912',1300);
insert into hyuser values(default,'b','12345678912',1200);
insert into hyuser values(default,'bb','12345678912',1600);
insert into hyuser values(default,'bbb','12345678912',1550);
select * from hyuser;

記錄一下

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章