1、目录结构:
2、数据库工具类
package util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DataSourceUtil {
private static String driver;
private static String url;
private static String username;
private static String passwd;
static {
init();
}
public static void init() {
Properties params = new Properties();
String configFile = "dataBase.properties";
InputStream iStream = DataSourceUtil.class.getClassLoader().getResourceAsStream(configFile);
try {
params.load(iStream);
} catch (IOException e) {
e.printStackTrace();
}
driver = params.getProperty("driver");
url = params.getProperty("url");
username = params.getProperty("username");
passwd = params.getProperty("passwd");
}
public static Connection openConnection() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, passwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3、dataBase.properties文件,上面用到了
4、BaseDao类:
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import util.DataSourceUtil;
public class BaseDao {
PreparedStatement ps = null;
public ResultSet executeQuery(String sql, Object[] params)
{
ResultSet res = null;
Connection conn = DataSourceUtil.openConnection();
try {
ps = conn.prepareStatement(sql);
for(int i = 0; i < params.length; i++)
{
ps.setObject(i+1, params[i]);
}
res = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return res;
}
public int executeUpdate(String sql, Object[] params)
{
int res = 0;
Connection conn = DataSourceUtil.openConnection();
try {
ps = conn.prepareStatement(sql);
for(int i = 0; i < params.length; i++)
{
ps.setObject(i+1, params[i]);
}
res = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return res;
}
}
5、使用示例:
package dao;
import java.util.List;
import entity.Student;
public interface StudentDao {
public Student login(String username, String passwd);
public Student register(String studentName, String passwd, String address, String birthday);
public List<Student> findStudentAll();
}
package dao.Impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import dao.BaseDao;
import dao.StudentDao;
import entity.Student;
public class StudentDaoImpl extends BaseDao implements StudentDao {
@Override
public Student login(String uname, String pwd) {
Student stu = null;
String sql = " select * from student where studentname = ? and passwd = ? ";
Object[] params = new Object[] { uname, pwd };
ResultSet rs = super.executeQuery(sql, params);
try {
while (rs.next()) {
stu = new Student(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5));
}
} catch (SQLException e) {
e.printStackTrace();
}
return stu;
}
@Override
public Student register(String studentName, String passwd, String address, String birthday) {
Student stu = null;
String sql = "insert into student values(seq_stuno.nextval,?,?,?,?) ";
Object[] params = new Object[] { studentName, passwd, address, birthday };
int cnt = executeUpdate(sql, params);
if (cnt > 0) {
stu = login(studentName, passwd);
}
return stu;
}
@Override
public List<Student> findStudentAll() {
List<Student> list = new ArrayList<Student>();
String sql = " select * from student ";
Object[] params = new Object[] {};
ResultSet rs = executeQuery(sql, params);
try {
while (rs.next()) {
Student stu = new Student(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4),
rs.getString(5));
list.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}