目录
JAVA三层结构
图解
步骤
文件结构:
代码
实体类:test
工具类:JDBCUtil
工具类:changeDate
view层
servlet层
service层——接口
service层——实现类
dao层——接口
JAVA三层结构
图解
步骤
主要用三层结构整合jdbc操作数据库
1.创建表
创建数据库表
2. 编写实体类
entity
test——>将用户的数据封装
3. 编写jdbc连接工具类
util
changeDate——>字符串和日期相互转换
JDBCUtil——>数据库工具类
4.编写三层结构【servlet——>service——>dao】
1. 确定视图层的需求——>将用户的需求所需要的参数传递给servlet层
2. service层 的 接口定义需要实现的方法
dao层 的 接口定义需要实现的方法
3. servlet目前不做操作,直接将值传递给service层
service的实现类重写方法,编写sql语句,并将值传递给dao层
dao层的实现类重写方法,执行sql语句
4. dao层将返回值传递会service层
service层将返回值传递回servlet层
servlet层将返回值传递回view(视图层)
5. view得到返回值进行判断,是否执行成功,并给用户反馈
5.编写测试类
文件结构:
代码
实体类:test
package entity;
/*
实体类
属性封装
*/
import java.util.Date;
public class test {
private int id;
private String tname;
private String sex;
private int age;
private Date birthday;
public test(){}
public test(String tname, String sex, int age, Date birthday) {
this.tname = tname;
this.sex = sex;
this.age = age;
this.birthday = birthday;
}
public test(int id, String tname, String sex, int age, Date birthday) {
this.id = id;
this.tname = tname;
this.sex = sex;
this.age = age;
this.birthday = birthday;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
工具类:JDBCUtil
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/*
连接数据库的工具类
*/
public class JDBCUtil {
public static Connection getcon(){
Connection con = null;
try {
String url = "jdbc:mysql://localhost:3306/xt";
//第一步:加载驱动
Class.forName("com.mysql.jdbc.Driver");
//第二步:创建连接
con = DriverManager.getConnection(url, "root", "root");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return con;
}
}
工具类:changeDate
package util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
日期类型转换
*/
public class changeDate {
public static String changed_s(Date d){
SimpleDateFormat sf =new SimpleDateFormat("yyyy-MM-dd");
String da =sf.format(d);
return da;
}
public static Date changed_d(String d){
Date da=null;
try {
SimpleDateFormat sf =new SimpleDateFormat("yyyy-MM-dd");
da =sf.parse(d);
} catch (ParseException e) {
e.printStackTrace();
}
return da;
}
}
view层
package view;
import entity.test;
import servlet.TestServlet;
import util.changeDate;
import java.util.List;
import java.util.Scanner;
public class testView {
Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
testView t1= new testView();
t1.menu();
}
// 主菜单
public void menu(){
System.out.println("——————人员管理系统——————");
System.out.println("\t1.——————添加");
System.out.println("\t2.——————删除");
System.out.println("\t3.——————修改");
System.out.println("\t4.——————查询");
System.out.println("\t5.——————退出");
System.out.println("请选择:");
int a = scanner.nextInt();
switch (a){
case 1:
add();
menu();
break;
case 2:
delete();
menu();
break;
case 3:
update();
menu();
break;
case 4:
select();
menu();
break;
case 5:
System.out.println("Bye");
break;
default:
break;
}
}
//调用servlet层
TestServlet ts = new TestServlet();
private void add() {
System.out.println("请输入添加的姓名:");
String name = scanner.next();
System.out.println("请输入性别:");
String sex = scanner.next();
System.out.println("请输入年龄:");
int age = scanner.nextInt();
System.out.println("请输入生日:");
String birthData = scanner.next();
// 将数据封装起来
test t2 = new test(name,sex,age, changeDate.changed_d(birthData));
int a= ts.addtest(t2);
if (a>0){
System.out.println("添加成功");
}
}
private void delete() {
System.out.println("请输入您想删除信息的名字");
String name = scanner.next();
test t2 =ts.selectOne(name);
if (t2.getTname()!=null){
System.out.println("找到了,接下来进行删除操作!");
int a= ts.delTest(t2.getId());
if (a>0){
System.out.println("删除成功");
}else {
System.out.println("未知原因,删除失败!");
}
}else {
System.out.println("未找到该名字,请确认名称是否输入正确!");
}
}
// 修改
private void update() {
System.out.println("请输入您想修改的名字:");
String name = scanner.next();
test t2 =ts.selectOne(name);
if (t2!=null){
System.out.println("有这个名字的信息,接下来进行修改!");
System.out.println("请输入新的名字");
String newName = scanner.next();
System.out.println("请输入新的性别");
String newSex = scanner.next();
System.out.println("请输入新的年龄");
int newAge = scanner.nextInt();
System.out.println("请输入新的生日");
String newBirth = scanner.next();
test t3 = new test(t2.getId(),newName,newSex,newAge,changeDate.changed_d(newBirth));
int a = ts.updateTest(t3);
if (a>0){
System.out.println("修改成功!");
}else {
System.out.println("修改失败!");
}
}
}
// 查询
private void select() {
List<test> t3 = ts.selectAll();
System.out.println("\t编号\t姓名\t性别\t年龄\t生日");
for (int i = 0; i < t3.size(); i++) {
test test4 = t3.get(i);
System.out.println("\t"+test4.getId()+"\t"+test4.getTname()+"\t"+test4.getSex()+"\t"+test4.getAge()+"\t"+test4.getBirthday());
}
}
}
servlet层
package servlet;
import entity.test;
import service.TestService;
import service.impl.testServiceImpl;
import java.util.List;
public class TestServlet {
TestService ts =new testServiceImpl();
public int addtest(test t){
// 目前不做操作,直接将t对象传给service层
int a =ts.addtest(t);
return a;
}
public test selectOne(String name ){
test t2 = ts.selectOne(name);
return t2;
}
public int delTest(int id){
int a =ts.delTest(id);
return a;
}
public List<test> selectAll(){
return ts.selectAll();
}
public int updateTest(test t){
int a =ts.updateTest(t);
return a;
}
}
service层——接口
package service;
import entity.test;
import java.util.List;
public interface TestService {
public int addtest(test t);
public test selectOne(String name);
public int delTest(int id);
public List<test> selectAll();
int updateTest(test t);
}
service层——实现类
package service.impl;
import dao.impl.testDaoImpl;
import dao.testDao;
import entity.test;
import service.TestService;
import util.changeDate;
import java.util.List;
public class testServiceImpl implements TestService {
// 调用dao
testDao td = new testDaoImpl();
@Override
public int addtest(test t) {
//service 拿到 servlet 传过来的数据后,编写sql语句
String add_sql = "insert into person (name ,sex,age,birth) values ('"+ t.getTname()+"','"+t.getSex()+"','"+t.getAge()+"','"+ changeDate.changed_s(t. getBirthday())+"')";
// 把sql语句传递给dao
int a =td.addtest(add_sql);
return a;
}
@Override
public test selectOne(String name) {
String selectOne_sql = "select * from person where name='"+name+"'";
test t2 = td.selectOne(selectOne_sql);
return t2;
}
@Override
public int delTest(int id) {
String del_sql = "delete from person where id='"+id+"'";
int a =td.delTest(del_sql);
return a;
}
@Override
public List<test> selectAll() {
String selectAll_sql="select * from person";
List<test> tt = td.selectAll(selectAll_sql);
return tt;
}
@Override
public int updateTest(test t) {
String update_sql ="update person set name = '"+t.getTname()+"',sex = '"+t.getSex()+"',age ='"+t.getAge()+"',birth = '"+changeDate.changed_s(t.getBirthday())+"' where id='"+t.getId()+"' ";
int a =td.delTest(update_sql);
return a;
}
}
dao层——接口
package dao;
import entity.test;
import java.util.List;
public interface testDao {
// 添加
int addtest(String sql);
// 查找一个
test selectOne(String sql);
// 删除
int delTest(String del_sql);
// 查找全部
List<test> selectAll(String sql);
}
dao层——实现类
package dao.impl;
import dao.testDao;
import entity.test;
import util.JDBCUtil;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class testDaoImpl implements testDao {
// 调用jdbc连接工具
Connection con =null;
Statement st =null;
ResultSet re = null;
@Override
public int addtest(String sql) {
// 执行sql语句
int a = 0;
try {
con = JDBCUtil.getcon();
st = con.createStatement();
a = st.executeUpdate(sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
try {
if (con!=null){
con.close();
}
if (st!=null){
st.close();
}
if (re!=null){
re.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return a;
}
public test selectOne(String sql){
test t2 =null;
try {
con = JDBCUtil.getcon();
st = con.createStatement();
re = st.executeQuery(sql);
if (re.next()){
t2 = new test(re.getInt("id"),re.getString("name"),re.getString("sex"),re.getInt("age"),re.getDate("birth"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
try {
if (con!=null){
con.close();
}
if (st!=null){
st.close();
}
if (re!=null){
re.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return t2;
}
@Override
public int delTest(String del_sql) {
int a = 0;
try {
con = JDBCUtil.getcon();
st = con.createStatement();
a = st.executeUpdate(del_sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
try {
if (con!=null){
con.close();
}
if (st!=null){
st.close();
}
if (re!=null){
re.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return a;
}
@Override
public List<test> selectAll(String sql) {
List<test> list =new ArrayList<>();
try {
con = JDBCUtil.getcon();
st = con.createStatement();
re = st.executeQuery(sql);
while (re.next()){
test t = new test(re.getInt("id"),re.getString("name"),re.getString("sex"),re.getInt("age"),re.getDate("birth"));
list.add(t);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
try {
if (con!=null){
con.close();
}
if (st!=null){
st.close();
}
if (re!=null){
re.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return list;
}
}