根据DAO模型那一篇的改进

实体类Person  就不上传了。

PersonDAO:

package com.henu.dao;/*** 捕获异常快捷键:ALT+SHIFT+Z*ps.executeUpdate();发送DML sql语句 ,代表当前操作影响的数据库的数据行数*ps.executeQuery();发送DQL语句,查询结果会被放在返回值ResultSet对象*/
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import Utils.JDBCUtil3;public class PersonDAO {/*** 1.将Person对象插入到T_PERSON表中:insert* 功能:将接收的person参数中的数据,插入到T_PERSON表中* 参数:被插入到数据库中的person* 返回值:void*/public void insert(Person person){Connection conn = null;PreparedStatement ps = null;//1.获得连接conn = JDBCUtil3.getConnection();        //2.创建发送sql的工具try {ps = conn.prepareStatement("insert into T_PERSON values(person_sep.nextval,?,?,?,?,?)");//3.绑定参数ps.setString(1, person.getName());//person对象的name属性值---insert语句的name位置ps.setInt(2, person.getSex());ps.setInt(3, person.getAge());ps.setString(4, person.getMobile());ps.setString(5, person.getAddress());//4.发送参数,执行sqlps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blockthrow new RuntimeException("添加数据异常!",e);}     //5.释放资源JDBCUtil3.close(null, ps, conn);}//2.删除数据库中的T_PERSON表中的数据/*** 参数:id*/public void delete(Integer id){Connection conn = null;PreparedStatement ps = null;        //1.获取连接conn = JDBCUtil3.getConnection();try {//2.创建psps = conn.prepareStatement("delete from T_PERSON where id=?");//3.绑定参数ps.setInt(1, id);//4.发送参数,执行sqlps.executeUpdate();System.out.println("id为"+id+"的行被删除");//5.释放资源JDBCUtil3.close(null, ps, conn);} catch (SQLException e) {throw new RuntimeException("删除异常!",e);}}//3.修改表中的一条数据:调用给person对象,修改到表//思考:根据id将其他属性值全部修改public void update(Person person){Connection conn = null;PreparedStatement ps = null;conn = JDBCUtil3.getConnection();try {ps = conn.prepareStatement("update T_PERSON set name=?,sex=?,age=?,mobile=?,address=? where id=?");ps.setString(1, person.getName());//person对象的name属性值---update语句的name位置ps.setInt(2, person.getSex());ps.setInt(3, person.getAge());ps.setString(4, person.getMobile());ps.setString(5, person.getAddress());ps.setInt(6, person.getId());int i = ps.executeUpdate();if (i != 0) {System.out.println("更新成功!");}else {System.out.println("更新失败!");}} catch (SQLException e) {throw new RuntimeException("修改错误!",e);}}/*** 4.根据id,查询数据库中的1条并封装成一个Entity对象,select * from T_PEROSN where id = ?* 功能:根据ID查询数据库T_PERSON表中的一条数据* 参数:Integer id, 接受要查询的id* 返回值:Person对象,封装id对应的一行数据*/public Person serlectById(Integer id){Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;//1.获得连接conn = JDBCUtil3.getConnection();try {//2.创建psps = conn.prepareStatement("select id,name,sex,age,mobile,address from T_PERSON where id=?");//3.绑定参数ps.setInt(1, id);//4.发送sql参数rs = ps.executeQuery();//5.处理结果集[ResultSet->Person]if (rs.next()) {//获得每一个rs值Integer ids = rs.getInt("id");String name = rs.getString("name");int sex = rs.getInt(3);int age = rs.getInt(4);String mobile = rs.getString(5);String address = rs.getString(6);//将每一个值封装到在Person对象中Person person = new Person(ids,name,sex,age,mobile,address);//返回return person;} //6.释放资源} catch (SQLException e) {throw new RuntimeException("查询异常!",e);}return null    ;}/*** 查询全部*/public List<Person> selectAllPerson(){Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;List<Person> list = new ArrayList<Person>();    conn = JDBCUtil3.getConnection();try {ps = conn.prepareStatement("select * from T_PERSON");rs = ps.executeQuery();while(rs.next()){//获得每一个rs值Integer ids = rs.getInt("id");String name = rs.getString("name");int sex = rs.getInt(3);int age = rs.getInt(4);String mobile = rs.getString(5);String address = rs.getString(6);//将每一个值封装到在Person对象中Person person = new Person(ids,name,sex,age,mobile,address);/** Person person = new Person(rs.getInt("id"),rs.getString("name"),*             rs.getInt(3),rs.getInt(4),rs.getString(5),rs.getString(5));*///将对象放入集合list.add(person);}            } catch (SQLException e) {throw new RuntimeException("查询全部异常!",e);}finally {JDBCUtil3.close(rs, ps, conn);}return list;}
}

PersonService:

package com.henu.dao;import java.util.List;/*** 业务对象:Service* 命名:XxxxService* 功能:面对业务实现用户的功能* 思路:一个功能对应一个方法 */public class PersonService {//1.添加Personpublic void add(Person person){PersonDAO dao = new PersonDAO();dao.insert(person);}//2.根据id查询并展示联系人信息, 参数id 返回值 实体对象public Person getByID(Integer id){PersonDAO dao = new PersonDAO();Person person = dao.serlectById(id);        return person;      }//3.展示所有联系人public List<Person> getAll(){PersonDAO dao = new PersonDAO();List<Person> list = dao.selectAllPerson();return list;}//4.根据id删除对应的联系人信息public void remove(Integer id){PersonDAO dao = new PersonDAO();dao.delete(id);}
}

PersonMain:

package com.henu.dao;import java.util.List;
import java.util.Scanner;public class PersonMain {public static void main(String[] args){/*** 添加功能*///1.接受用户输入的信息
//      Scanner scanner = new Scanner(System.in);
//      String name = scanner.next();
//      int sex = scanner.nextInt();
//      int age = scanner.nextInt();
//      String mobile = scanner.next();
//      String address = scanner.next();
//      Person person = new Person(null,name,sex,age,mobile,address);
//      //2.调用添加联系人的业务功能,---功能XxxxService
//      PersonService pService = new PersonService();
//      pService.add(person);
//      //3.展示添加结束
//      System.out.println("添加成功");/*** 查询*/
//      Scanner scanner = new Scanner(System.in);
//      Integer id = scanner.nextInt();
//      PersonService pService = new PersonService();
//      Person person = pService.getByID(id);
//      System.out.println(person);/*** 查询全部*/
//      PersonService pService = new PersonService();
//      List<Person> list = pService.getAll();
//      System.out.println(list);/*** 删除*/Scanner scanner = new Scanner(System.in);Integer id = scanner.nextInt();PersonService pService = new PersonService();pService.remove(id);System.out.println("删除成功");}
}

javaweb---三层架构++相关推荐

  1. JavaWeb三层架构详解

    什么是三层架构? 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer).业务逻辑层(Business L ...

  2. JavaWeb三层架构的理解/三层架构的优缺点/三层架构与MVC的区别

    1.三层架构 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器.在JavaEE开发中,几乎全都是基于B/S架构的开发.那么在B/S架构 ...

  3. JavaWeb三层架构

    什么是三层架构? 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer).业务逻辑层(Business L ...

  4. 基于JavaWeb三层架构的OA管理系统

    本系统是一个类似于培训学校的一个管理系统,系统角色有员工,学生. 首页 它的左侧是后台管理系统的功能界面,右侧是前面的通过数据库查询的一个月或者是一年的统计信息,下面柱状图个折线图采用的是echart ...

  5. Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教、用户、管理员)+可以用于学习SSM框架、javaweb、maven项目入门

    Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教.用户.管理员)+可以用于学习SSM框架.javaweb.maven项目入门 可以用于课程设计.毕业设计的知识点入门学 ...

  6. JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门

    JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门 可以用于课程设计.毕业设计的知识点入门学习 提示:此资源仅用于javaweb网 ...

  7. 简述mvc和java三层框架,springMVC设计模式和javaWeb三层框架

    一.springMVC  设计模式 MVC模式是软件工程中的一种能够软件架构模式,把软件分为三个基本部分,模型(model).视图(view)和控制器(controller).使程序简化,更加直观. ...

  8. 物流快递系统前、后端+Java语言+SpringBoot项目+MVC三层架构+maven+Mysql+Tomcat+可以用于学习SpringBoot项目入门

    物流快递系统前.后端+Java语言+SpringBoot项目+MVC三层架构+Mysql+Tomcat+可以用于学习SpringBoot项目入门 可以用于课程设计.毕业设计的知识点入门学习 提示:此资 ...

  9. 关于MVC与三层架构、个人总结网上杂七杂八得出的最终成果、asp.net (core) MVC、JavaWeb的MVC

    阅读本文必须明白的事情 首先需要明白的是不同语言实现的MVC与三层架构对应的层是不一样的!!! 拿.net来说,.net实现MVC与其他语言的MVC具体实现是不同的,asp.net MVC与 MVC ...

  10. 关于写javaweb项目,遇到的问题:三层架构

    关于写javaweb项目,遇到的问题 三层架构: 表示层(UI)业务逻辑层(BLL) 数据访问层(DAL) 高内聚,低耦合. 高内聚:一个模块内各元素彼此结合紧密程度高(只负责单一功能) 低耦合:简单 ...

最新文章

  1. 每日一篇——lodash—array——differenceBy
  2. gelera mysql_基于Galera的MySQL高可用集群
  3. Java Web整合开发(10) -- 资源国际化
  4. 《大话数据结构》第9章 排序 9.5 直接插入排序
  5. Linux信号实践(3) --信号内核表示
  6. Spring Enable批注–编写自定义的Enable批注
  7. 少儿图论:八岁小孩眼里的欧拉公式
  8. dtoj#4263. duliu
  9. Android年月日选择,Android日期选择器实现年月日三级联动
  10. 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
  11. 基于Java分词的ikanalyzer工具
  12. Rust : *mut c_void 转型 ‘a mut dyn T
  13. 网马(原理)及制作全过程
  14. 怎么删除计算机病毒,电脑中病毒删不掉怎么办?
  15. Python人脸笑脸识别【人工智能】【CNN】
  16. 2015社交营销计划指南
  17. 电脑点击我的计算机无法打开,双击我的电脑打不开怎么办
  18. SAP公有云和私有云解决方案概述
  19. Google guava之BiMap简介说明
  20. PDF如何编辑?教你几个常用的PDF编辑方法

热门文章

  1. 牛客 - 第k小数(线性寻找第 k 小数)
  2. linux 提交git,linux下git使用记录1 git 提交
  3. linux mysql tmp_linux下mysql的tmp_table_size改变大小方法
  4. 石子合并(GarsiaWachs算法)
  5. deque,list,queue,priority_queue
  6. codeforces contest 1119
  7. Boost使用几条简单笔记
  8. 第四期直播分享预告-高薪offer指南
  9. 再见丑陋的 Swagger,这个API神器界面更炫酷,逼格更高,体验更好!
  10. 学会查看 RabbitMQ日志