分别创建 dao包、servlet包、entity实体包、util包
在druid.properties文件中添加如下代码:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/empye
username=root
password=root
创建一个student类 实现数据库表中的方法
package com.hph.entity;
public class Student {
private Integer id;
private String uname;
private Integer age;
public Student(Integer id, String uname, Integer age) {
this.id = id;
this.uname = uname;
this.age = age;
}
public Student(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", uname='" + uname + '\'' +
", age=" + age +
'}';
}
}
在util 中创建 工具类名称叫 DButil
package com.hph.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.*;
import java.util.*;
public class DBUtil {
/**
* 使用druid.properties 文件把连接数据库的地址存放在文件中
* 使用数据源调用druid.properties 中的数据
* */
private static DataSource ds;
static {
Properties pro=new Properties();
try {
pro.load(DBUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
/**获得连接*/
public static Connection getConnection(){
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/** 增删改的通用方法
* @paramString sql 要执行的sql
* @paramObject[] obj 对象类型的数组 里面存放着 sql执行的占位符参数
*
* Object... 可变参数
* */
public static boolean executeUpdate(String sql,Object... args){
Connection conn = null;
PreparedStatement ps = null;
try {
/**连接数据库*/
conn =DBUtil.getConnection();
/**调用sql中的语句*/
ps = conn.prepareStatement(sql);
/**遍历 sql语句中的数据*/
for (int i=0;i<args.length;i++){
ps.setObject(i+1,args[i]);
}
//执行sql语句
int i = ps.executeUpdate();
if (i>0)return true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
//关闭
close(conn,ps,null);
}
return false;
}
/**
* c查询的通用方法
* @param sql
* @param args
* @return
*/
public static List<Map<String, Object>> executeQuery(String sql, Object... args){
Connection conn = null;
PreparedStatement ps = null;
ResultSet set = null;
try {
conn = DBUtil.getConnection();
ps = conn.prepareStatement(sql);
/* 有可能有参数 */
for (int i=0;i<args.length;i++){
ps.setObject(i+1,args[i]);
}
/*执行*/
set = ps.executeQuery();
/*需要将所有数据都存放到 List中 每一行 用一个 map存放*/
List<Map<String,Object>> list = new ArrayList<>();
/*获取本次查询结果集有多少列*/
int count = set.getMetaData().getColumnCount();
while(set.next()){
Map<String, Object> map = new HashMap<>();//一行数据 用一个map 接收
/**获取本次列的名字*/
for(int i=0;i<count;i++){
String name = set.getMetaData().getColumnLabel(i+1);
map.put(name,set.getObject(name));
}
/*将每行的map存放到 List中*/
list.add(map);
}
return list;
} catch (Exception e) {
e.printStackTrace();
}finally {
close(conn,ps,set);
}
return null;
}
/** 关闭的通用方法
*
* */
private static void close(Connection conn,PreparedStatement st,ResultSet set){
try {
if(set!=null){
set.close();
}
if(st!=null){
st.close();
}
if(conn != null){
conn.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
创建一个学生类的接口
package com.hph.dao;
import com.hph.entity.Student;
import java.util.List;
import java.util.Map;
public interface IStudent {
/*** 添加一个新的学生信息
* inset into student (name,age)value(?,?);
* */
boolean add(Student stu);
/**根据id 删除信息*/
boolean delete(int id);
// C 根据id修改学生
boolean update( Student stu);
// D 根据id查询学生
// E 查询所有学生
List<Map<String,Object>> getAllStudent();
}
实现接口
package com.hph.dao.impl;
import com.hph.dao.IStudent;
import com.hph.entity.Student;
import com.hph.util.DBUtil;
import java.util.List;
import java.util.Map;
public class StudentImpl implements IStudent {
@Override
/**添加数据*/
public boolean add(Student stu) {
String sql="insert into student (sname,age)values(?,?)";
return DBUtil.executeUpdate(sql,stu.getUname(),stu.getAge());
}
/**删除数据*/
@Override
public boolean delete(int id) {
String sql="delete from student where id=?";
return DBUtil.executeUpdate(sql,id);
}
/**更新数据*/
@Override
public boolean update(Student stu) {
String sql="update student set sname=?,age=? where id=?";
return DBUtil.executeUpdate(sql,stu.getUname(),stu.getAge(),stu.getId());
}
/**查询数据*/
@Override
public List<Map<String, Object>> getAllStudent() {
String sql="select * from student";
return DBUtil.executeQuery(sql);
}
}