一:项目结构
大致分为bean包,dao包,service包,util包,web包,resource包,WEB-INF包7个部分
二:预备阶段
预备阶段包括数据库,实体类与resource包配置文件,工具类util,部分 jar包部分,数据库与jar包部分参考上一篇博客,这里只汇总代码:
resource包:存放属性配置文件
db.properties 配置文件
url=jdbc:mysql://localhost:3306/mydemo1?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
uname=root
upass=1380341
driverClass=com.mysql.cj.jdbc.Driver
bean包:存放实体类
Users实体类
package bean;
public class Users {
//属性
private Integer userid;
private String username;
private Integer age;
private String sex;
private String password;
private Integer status;
//无参
public Users() {
}
//全参
public Users(Integer userid, String username, Integer age, String sex, String password) {
this.userid = userid;
this.username = username;
this.age = age;
this.sex = sex;
this.password = password;
}
//重写toString(),get(),set()方法
@Override
public String toString() {
return "Users{" +
"userid=" + userid +
", username='" + username + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", password='" + password + '\'' +
", status=" + status +
'}';
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
util包:工具类
包括数据库连接池,分页工具类等
DBUtilsPlus(德鲁伊数据库连接池)
package util;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.*;
import java.util.List;
import java.util.ResourceBundle;
// BaseDao 将链接数据库的步骤进行封装,简化后续JDBC操作
public class DBUtilsPlus {
// 德鲁伊 数据库连接池
private static DruidDataSource dataSource;
//1.定义常用的工具类(Protected修饰的属性或方法可以在子类中被调用)
protected Connection connection;
protected PreparedStatement pps;
protected ResultSet resultSet;
static {
dataSource=new DruidDataSource();
ResourceBundle db = ResourceBundle.getBundle("db");
dataSource.setUrl(db.getString("url"));
dataSource.setDriverClassName(db.getString("driverClass"));
dataSource.setUsername(db.getString("uname"));
dataSource.setPassword(db.getString("upass"));
//设置链接数量
// dataSource.setInitialSize(30);
dataSource.setMaxActive(8);
}
//3.得到链接对象
protected Connection getConnection(){
try {
connection = dataSource.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return connection;
}
//4.创建通道
protected PreparedStatement getPps(String sql){
getConnection();
try {
pps = connection.prepareStatement(sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return pps;
}
//5.绑定占位符的值 insert into A(sid,sname,sex,age .... ) values(?,?,?,?)
//List 参数存储的是给占位符所赋的值
//setParameter(new ArrayList())
public void setParameter(List list){
try {
if (list != null&&list.size()>0) { //对List集合进行有效性验证
for (int i=0;i<list.size();i++) {
pps.setObject(i+1,list.get(i));
}
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
//6.执行sql-增删改
protected int updateDB(String sql,List list){
int i = 0;
try {
getPps(sql);//sql
setParameter(list);//list-绑定的是占位符的参数
i = pps.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return i;
}
//7.执行sql-查询
protected ResultSet selectDB(String sql,List list){
try {
getPps(sql);//sql
setParameter(list);//list-绑定的是占位符的参数
resultSet=pps.executeQuery();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return resultSet;
}
//8.关闭资源
public void closeAll(){
try {
if (resultSet != null) {
resultSet.close();
}
if (pps != null) {
pps.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
PageUtil分页工具类
package util;
public class PageUtil {
//页码值
public static final int PAGESIZE=3;
}
PageUtilPlus分页工具类升级版
package util;
import java.util.List;
public class PageUtilPlus<T> {
//将分页相关数据定义在本类中
private Integer pageIndex;//页码值
private Integer pageSize=3;//每页显示条数
private Integer totalCount;//总条数
private Integer totalPages;//总页数
private List<T> datalist;//查询的数据集合
public Integer getPageIndex() {
return pageIndex;
}
public void setPageIndex(Integer pageIndex) {
this.pageIndex = pageIndex;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getTotalPages() {
return totalCount%pageSize>0?totalCount/pageSize+1:totalCount/pageSize;
}
public void setTotalPages(Integer totalPages) {
this.totalPages = totalPages;
}
public List<T> getDatalist() {
return datalist;
}
public void setDatalist(List<T> datalist) {
this.datalist = datalist;
}
}
三:数据层dao
dao包
与数据库的操作,增删改查等方法,及其实现类
数据类:UsersDao
package dao;
import bean.Users;
import java.util.List;
public interface UsersDao {
//登录方法(根据用户名和密码查询用户信息)
public Users Login(String username,String pass);
//查询全部的方法
public List<Users> selectAll(int pageIndex,int size,String uname,String usex);
//查询总条数+模糊查询条件
public int totalCount(String uname,String usex);
//真删除(根据userid)
public int deleteUser(int userid);
//假删除
public int deleteByid(int userid);
//主键查询
public Users selectById(int userid);
//更新操作
public int updateuser(Users users);
//新增操作
public int insert(Users users);
}