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;

记录一下

发布了51 篇原创文章 · 获赞 6 · 访问量 4741

猜你喜欢

转载自blog.csdn.net/weixin_42191996/article/details/102992072