• mvc三层架构的思想_使用连接池技术的综合案例


    * mvc:三层架构思想
     * 
     * view:视图层
     *         展示页面效果(SE阶段:测试类,EE阶段:jsp,html展示效果)
     * model:业务层的数据的数据处理
     *         web层以及service(业务接口层/业务实现层)
     * controller:控制层
     *         调用dao层来去连接数据库,操作数据库
     *         增删查改!返回给用户信息
     * 
     * 代码架构:
     *     xx.xx.entity
     *             实体类的属性---需要数据库表中字段对应(映射关系)
     *     xx.xx.service
     *             业务接口层
     *     xx.xx.service.impl
     *             业务接口实现层
     *     xx.xx.web
     *             后台处理,调用层
     * 
     * 需求:
     *           有一个用户:User类----- > 某个数据库中:user表
     *                  用户id:userId                    userId
     *                 用户姓名:username                username
     *               用户密码:password                passwoed
     *              用户名地址:address                address
     *              电话:phone                        phone
     *              
     *             对用户完成增删查改操作,使用JDBC
     *             按照上面的格式:
     *             
     *  分析:
     *      1)创建一个数据库,创建一张表:user
     *      2)对user类的属性产生一个映射关系(符合javaBean规范)
     *      3)业务接口层
     *      4)业务接口实现层
     *      5)数据库访问层
     *      6)数据库访问实现层 

    1. package com.lin.test;
    2. import java.util.List;
    3. import org.junit.Test;
    4. import com.lin.entity.User;
    5. import com.lin.service.UserService;
    6. import com.lin.service.impl.UserServiceImpl;
    7. public class UserTest {
    8. private UserService userService = new UserServiceImpl() ;
    9. @Test
    10. public void testAdd() {
    11. //创建User对象
    12. User user = new User() ;
    13. user.setUsername("张三");
    14. user.setPassword("2222");
    15. user.setAddress("甘肃");
    16. user.setPhone("13688889999");
    17. //需要调用service层
    18. //调用add功能
    19. int count = userService.add(user) ;
    20. System.out.println("影响了"+count+"行");
    21. }
    22. @Test
    23. public void testUpdate() {
    24. User user = new User() ;
    25. user.setUserId(4);
    26. user.setUsername("李四");
    27. user.setPassword("123456");
    28. user.setAddress("北京");
    29. user.setPhone("13888888888");
    30. int count = userService.update(user) ;
    31. System.out.println(count);
    32. }
    33. @Test
    34. public void testDelete() {
    35. User user = new User() ;
    36. user.setUserId(6);
    37. int count = userService.delete(user.getUserId()) ;
    38. System.out.println(count);
    39. //请求转发.重定向到指定jsp/html页面中
    40. }
    41. @Test
    42. public void testFindAll() {
    43. List list = userService.selectAll() ;
    44. for(User user :list) {
    45. System.out.println(user);//执行实体类中toString()
    46. }
    47. }
    48. //测试:通过用户id查询用户信息
    49. @Test
    50. public void testFindById() {
    51. User user2 = userService.find(3) ;
    52. System.out.println(user2);
    53. if(user2 !=null) {
    54. System.out.println(user2.getUserId()+"---"+user2.getUsername()+"---"+user2.getPassword()
    55. +"---"+user2.getAddress()+"---"+user2.getPhone());
    56. }
    57. }
    58. }
    1. package com.lin.dao.impl;
    2. import java.sql.Connection;
    3. import java.sql.PreparedStatement;
    4. import java.sql.ResultSet;
    5. import java.sql.SQLException;
    6. import java.util.ArrayList;
    7. import java.util.List;
    8. import com.lin.dao.UserDao;
    9. import com.lin.entity.User;
    10. import com.lin.utils.JdbcUtils;
    11. public class UserDaoImpl implements UserDao {
    12. private Connection conn;
    13. private PreparedStatement stmt;
    14. private ResultSet rs;
    15. @Override
    16. public int add(User user) {
    17. try {
    18. // 获取连接
    19. conn = JdbcUtils.getConnection();
    20. // 准备sql
    21. String sql = "insert into user(username,password,address,phone)values(?,?,?,?);";
    22. // 编译sql
    23. stmt = conn.prepareStatement(sql);
    24. // 给参数赋值
    25. stmt.setString(1,user.getUsername());
    26. stmt.setString(2,user.getPassword());
    27. stmt.setString(3,user.getAddress());
    28. stmt.setString(4,user.getPhone());
    29. // PreparedStatement对象中执行sql
    30. return stmt.executeUpdate();
    31. } catch (SQLException e) {
    32. // TODO Auto-generated catch block
    33. e.printStackTrace();
    34. }
    35. return 0;
    36. }
    37. @Override
    38. public int updata(User user) {
    39. try {
    40. // 获取连接对象
    41. conn = JdbcUtils.getConnection();
    42. // 准备sql
    43. String sql = "updata user set username=?,set username=?,password=?,address=?,phone=? where userId=?;";
    44. // 预编译sql
    45. stmt = conn.prepareStatement(sql);
    46. //设置参数
    47. stmt.setString(1,user.getUsername());
    48. stmt.setString(2,user.getPassword());
    49. stmt.setString(3,user.getAddress());
    50. stmt.setString(4,user.getPhone());
    51. stmt.setInt(5,user.getUserId());
    52. // 执行sql
    53. return stmt.executeUpdate();
    54. } catch (SQLException e) {
    55. // TODO Auto-generated catch block
    56. e.printStackTrace();
    57. }
    58. return 0;
    59. }
    60. // 根据用户id删除用户信息
    61. @Override
    62. public int delete(int id) {
    63. try {
    64. conn=JdbcUtils.getConnection();
    65. String sql="delete from user where id=?;";
    66. stmt=conn.prepareStatement(sql);
    67. //设置参数
    68. stmt.setInt(1,id);
    69. //执行
    70. return stmt.executeUpdate();
    71. } catch (SQLException e) {
    72. // TODO Auto-generated catch block
    73. e.printStackTrace();
    74. }
    75. return 0;
    76. }
    77. @Override
    78. public List selectAll() {
    79. //构造一个空的ArrayList
    80. ArrayList list;
    81. try {
    82. list=new ArrayList();
    83. conn=JdbcUtils.getConnection();
    84. String sql="select * from user;";
    85. stmt=conn.prepareStatement(sql);
    86. // 执行sql
    87. rs=stmt.executeQuery();
    88. User user=null;
    89. // 遍历集合结果,封装到User对象中
    90. while(rs.next()) {
    91. // 通过列的名称获取
    92. int userId=rs.getInt("userId");
    93. String username=rs.getString("username");
    94. String password=rs.getString("password");
    95. String address=rs.getString("address");
    96. String phone=rs.getString("phone");
    97. user=new User();
    98. user.setUserId(userId);
    99. user.setUsername(username);
    100. user.setPassword(password);
    101. user.setAddress(address);
    102. user.setPhone(phone);
    103. //添加到集合中
    104. list.add(user);
    105. return list;
    106. }
    107. } catch (SQLException e) {
    108. // TODO Auto-generated catch block
    109. e.printStackTrace();
    110. }finally {
    111. JdbcUtils.close(rs, stmt, conn);
    112. }
    113. return null;
    114. }
    115. //通过id查询用户
    116. @Override
    117. public User findById(int id) {
    118. try {
    119. User user=new User();
    120. conn=JdbcUtils.getConnection();
    121. String sql="select * from user where useeId=?; ";
    122. // 编译sql
    123. stmt=conn.prepareStatement(sql);
    124. //设置参数
    125. stmt.setInt(1,id);
    126. // 执行查询
    127. rs=stmt.executeQuery();
    128. while(rs.next()) {
    129. int userId=rs.getInt("userId");
    130. String username=rs.getString("username");
    131. String password=rs.getString("password");
    132. String address=rs.getString("address");
    133. String phone=rs.getString("phone");
    134. // 封装User对象
    135. user.setUserId(userId);
    136. user.setUsername(username);
    137. user.setPassword(password);
    138. user.setAddress(address);
    139. user.setPhone(phone);
    140. return user;
    141. }
    142. } catch (SQLException e) {
    143. // TODO Auto-generated catch block
    144. e.printStackTrace();
    145. }finally {
    146. JdbcUtils.close(rs, stmt, conn);
    147. }
    148. return null;
    149. }
    150. }
    1. package com.lin.dao;
    2. import java.util.List;
    3. import com.lin.entity.User;
    4. /**
    5. * 持久层(用户数据访问接口层)
    6. * @author wl
    7. * */
    8. public interface UserDao {
    9. // 添加用户信息
    10. public abstract int add(User user);
    11. // 更新操作
    12. public abstract int updata(User user);
    13. // 删除:通过编号删除用户
    14. public abstract int delete(int id);
    15. // 查询所有
    16. public abstract List selectAll();
    17. // 通过用户id查询用户
    18. public abstract User findById(int id);
    19. }
    1. package com.lin.service.impl;
    2. import java.util.List;
    3. /**
    4. * 用户的业务接口实现层
    5. * 调用dao层完成增删查改业务
    6. * @author wl
    7. * */
    8. import com.lin.dao.UserDao;
    9. import com.lin.dao.impl.UserDaoImpl;
    10. import com.lin.entity.User;
    11. import com.lin.service.UserService;
    12. public class UserServiceImpl implements UserService {
    13. // 在创建一个实例:持久层对象dao层
    14. private UserDao ud=new UserDaoImpl();
    15. @Override
    16. public int add(User user) {
    17. return ud.add(user);
    18. }
    19. @Override
    20. public int update(User user) {
    21. return ud.updata(user);
    22. }
    23. @Override
    24. public int delete(int id) {
    25. return ud.delete(id);
    26. }
    27. @Override
    28. public List selectAll() {
    29. return ud.selectAll();
    30. }
    31. @Override
    32. public User find(int id) {
    33. return ud.findById(id);
    34. }
    35. @Override
    36. public long findCount() {
    37. return 0;
    38. }
    39. }
    1. package com.lin.service;
    2. import java.util.List;
    3. import com.lin.entity.User;
    4. /*
    5. * 针对用户操作的业务接口层
    6. * */
    7. public interface UserService {
    8. //添加用户信息
    9. public abstract int add(User user);
    10. //更新操作
    11. public abstract int update( User user);
    12. //删除:通过编号删除用户
    13. public abstract int delete(int id);
    14. //查询所有
    15. public abstract List selectAll();
    16. //通过用户id查询所有
    17. public abstract User find(int id);
    18. // 查询user表中记录
    19. public abstract long findCount();
    20. }
    1. package com.lin.entity;
    2. public class User {
    3. //对应user表中的字段
    4. private int userId;
    5. private String username;
    6. private String password;
    7. private String address;
    8. private String phone;
    9. public User() {
    10. super();
    11. // TODO Auto-generated constructor stub
    12. }
    13. public User(int userId, String username, String password, String address, String phone) {
    14. super();
    15. this.userId = userId;
    16. this.username = username;
    17. this.password = password;
    18. this.address = address;
    19. this.phone = phone;
    20. }
    21. public int getUserId() {
    22. return userId;
    23. }
    24. public void setUserId(int userId) {
    25. this.userId = userId;
    26. }
    27. public String getUsername() {
    28. return username;
    29. }
    30. public void setUsername(String username) {
    31. this.username = username;
    32. }
    33. public String getPassword() {
    34. return password;
    35. }
    36. public void setPassword(String password) {
    37. this.password = password;
    38. }
    39. public String getAddress() {
    40. return address;
    41. }
    42. public void setAddress(String address) {
    43. this.address = address;
    44. }
    45. public String getPhone() {
    46. return phone;
    47. }
    48. public void setPhone(String phone) {
    49. this.phone = phone;
    50. }
    51. @Override
    52. public String toString() {
    53. return "User [userId=" + userId + ", username=" + username + ", password=" + password + ", address=" + address
    54. + ", phone=" + phone + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="
    55. + super.toString() + "]";
    56. }
    57. }
  • 相关阅读:
    【闲言碎语】学习 文本编辑器vim及其插件、ranger、C语言、WSL配置、X11等等
    基于stm32单片机的智能恒温自动加氧换水鱼缸
    100天精通Python(爬虫篇)——第47天:selenium自动化操作浏览器
    ABP Framework 5.3.0 版本新增功能和变更说明
    如何获取淘宝商品评论 API接口
    WordPress主题开发( 八)之—— 模板循环详细用法
    Python:用tkinter制做一个音乐下载小软件
    前端面试题第六天
    项目管理构建工具——Maven(基础篇)
    Docker创建FTP服务器
  • 原文地址:https://blog.csdn.net/weixin_57219176/article/details/126370022