在学习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;
记录一下