JDBC实现MySQL数据库的增删改查

快来打我* 2021-09-25 02:32 476阅读 0赞

大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。
1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员…
2、这几年,我整理了很多IT技术相关的教程给大家,爱生活、爱分享。
3、如果您觉得文章有用,请收藏,转发,评论,并关注我,谢谢!
博客导航跳转(请收藏):邵奈一的技术博客导航
| 公众号 | 微信 | 微博 | CSDN | 简书 |


教程目录

  • 0x00 教程内容
  • 0x01 环境准备
            1. 表数据准备
            1. 项目结构准备
  • 0x02 编写代码
            1. Student实体类代码
            1. StudentDAO访问接口
            1. StudentDAOImpl访问接口实现类
  • 0x03 测试
            1. 增删改查测试类编写
            1. 测试结果
  • 0xFF 总结

0x00 教程内容

  1. 环境准备
  2. 编写代码
  3. 测试

如果没有基础,或者环境没有准备,请参考此两篇教程:
JDBC连接MySQL数据库(一)
JDBC连接MySQL数据库(二)

0x01 环境准备

1. 表数据准备

给数据库添加几条数据:

  1. insert into student(name,age) values ("邵奈一",30);
  2. insert into student(name,age) values ("邵奈一",28);
2. 项目结构准备

新建相应的包以及类(注意新建的文件类型)
在这里插入图片描述

0x02 编写代码

1. Student实体类代码
  1. package com.shaonaiyi.domain;
  2. /** * @Auther: shaonaiyi@163.com * @Date: 2021/1/13 15:17 * @Description: 学生实体类 */
  3. public class Student {
  4. private Integer id;
  5. private String name;
  6. private Integer age;
  7. public Integer getId() {
  8. return id;
  9. }
  10. public void setId(Integer id) {
  11. this.id = id;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public Integer getAge() {
  20. return age;
  21. }
  22. public void setAge(Integer age) {
  23. this.age = age;
  24. }
  25. }
2. StudentDAO访问接口
  1. package com.shaonaiyi.dao;
  2. import com.shaonaiyi.domain.Student;
  3. import java.util.List;
  4. /** * @Auther: shaonaiyi@163.com * @Date: 2021/1/13 15:19 * @Description: Student访问接口 */
  5. public interface StudentDAO {
  6. //1、查询所有的学生
  7. public List<Student> query();
  8. //2、新增学生
  9. public Integer save(Student student);
  10. //3、删除学生
  11. public Integer delete(Integer id);
  12. //4、修改学生
  13. public Integer update(Student student);
  14. }
3. StudentDAOImpl访问接口实现类
  1. package com.shaonaiyi.dao;
  2. import com.shaonaiyi.domain.Student;
  3. import com.shaonaiyi.utils.JDBCUtil;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. /** * @Auther: shaonaiyi@163.com * @Date: 2021/1/13 15:22 * @Description: Student访问接口实现类 */
  10. public class StudentDAOImpl implements StudentDAO {
  11. @Override
  12. public List<Student> query() {
  13. List<Student> studentList = new ArrayList<>();
  14. Connection connection = null;
  15. PreparedStatement preparedStatement = null;
  16. ResultSet resultSet = null;
  17. try {
  18. connection = JDBCUtil.getConnection();
  19. preparedStatement = connection.prepareStatement("select * from student");
  20. resultSet = preparedStatement.executeQuery();
  21. Student student = null;
  22. while (resultSet.next()) {
  23. int id = resultSet.getInt("id");
  24. String name = resultSet.getString("name");
  25. int age = resultSet.getInt("age");
  26. student = new Student();
  27. student.setId(id);
  28. student.setName(name);
  29. student.setAge(age);
  30. studentList.add(student);
  31. }
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. } finally {
  35. JDBCUtil.release(resultSet, preparedStatement, connection);
  36. }
  37. return studentList;
  38. }
  39. @Override
  40. public Integer save(Student student) {
  41. Connection connection = null;
  42. PreparedStatement preparedStatement = null;
  43. ResultSet resultSet = null;
  44. Integer result = 0;
  45. try {
  46. connection = JDBCUtil.getConnection();
  47. preparedStatement = connection.prepareStatement("insert into student(name,age) values (?,?)");
  48. preparedStatement.setString(1, student.getName());
  49. preparedStatement.setInt(2,student.getAge());
  50. result = preparedStatement.executeUpdate();
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. } finally {
  54. JDBCUtil.release(resultSet, preparedStatement, connection);
  55. }
  56. return result;
  57. }
  58. @Override
  59. public Integer delete(Integer id) {
  60. Connection connection = null;
  61. PreparedStatement preparedStatement = null;
  62. ResultSet resultSet = null;
  63. Integer result = 0;
  64. try {
  65. connection = JDBCUtil.getConnection();
  66. preparedStatement = connection.prepareStatement("delete from student where id = " + id);
  67. result = preparedStatement.executeUpdate();
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. } finally {
  71. JDBCUtil.release(resultSet, preparedStatement, connection);
  72. }
  73. return result;
  74. }
  75. @Override
  76. public Integer update(Student student) {
  77. Connection connection = null;
  78. PreparedStatement preparedStatement = null;
  79. ResultSet resultSet = null;
  80. Integer result = 0;
  81. try {
  82. connection = JDBCUtil.getConnection();
  83. preparedStatement = connection.prepareStatement("update student set age = " + student.getAge() + " where name = '" + student.getName() + "'");
  84. result = preparedStatement.executeUpdate();
  85. } catch (Exception e) {
  86. e.printStackTrace();
  87. } finally {
  88. JDBCUtil.release(resultSet, preparedStatement, connection);
  89. }
  90. return result;
  91. }
  92. }

0x03 测试

1. 增删改查测试类编写
  1. package com.shaonaiyi.dao;
  2. import com.shaonaiyi.domain.Student;
  3. import org.junit.Test;
  4. import java.util.List;
  5. /** * @Auther: shaonaiyi@163.com * @Date: 2021/1/13 15:34 * @Description: Student访问接口实现测试类 */
  6. public class StudentDAOImplTest {
  7. @Test
  8. public void testQuery() {
  9. StudentDAO studentDAO = new StudentDAOImpl();
  10. List<Student> studentList = studentDAO.query();
  11. for (Student student : studentList) {
  12. System.out.println("---------------------------");
  13. System.out.println("学生id:" + student.getId());
  14. System.out.println("学生name:" + student.getName());
  15. System.out.println("学生age:" + student.getAge());
  16. }
  17. }
  18. @Test
  19. public void testInsert() {
  20. StudentDAO studentDAO = new StudentDAOImpl();
  21. Student student = new Student();
  22. student.setName("邵奈二");
  23. student.setAge(18);
  24. Integer result = studentDAO.save(student);
  25. System.out.println("结果:" + result);
  26. }
  27. @Test
  28. public void testDelete() {
  29. StudentDAO studentDAO = new StudentDAOImpl();
  30. Integer result = studentDAO.delete(2);
  31. System.out.println("结果:" + result);
  32. }
  33. @Test
  34. public void testUpdate() {
  35. StudentDAO studentDAO = new StudentDAOImpl();
  36. Student student = new Student();
  37. student.setName("邵奈一");
  38. student.setAge(32);
  39. Integer result = studentDAO.update(student);
  40. System.out.println("结果:" + result);
  41. }
  42. // @Test
  43. // public void testSQL() {
  44. // Student student = new Student();
  45. // student.setName("邵奈一");
  46. // student.setAge(32);
  47. // String sql = "update student set age = " + student.getAge() + " where name = '" + student.getName() + "'";
  48. // System.out.println(sql);
  49. //
  50. // }
  51. }

温馨提示:为了方便,这里把SQL语句直接写死在了参数里,其实可以赋值给一个字符串,增加代码的可读性,并且方便打印出来看看,免得自己在拼接SQL语句的时候拼接错误

当然,如果担心拼接错误,完全可以以下代码,通过设置坐标传值进去:

  1. preparedStatement = connection.prepareStatement("insert into student(name,age) values (?,?)");
  2. preparedStatement.setString(1, student.getName());
  3. preparedStatement.setInt(2,student.getAge());
2. 测试结果

1、查
在这里插入图片描述
2、增
在这里插入图片描述
3、删
在这里插入图片描述
4、改
在这里插入图片描述

0xFF 总结

  1. 请关注本博客,以后提供更多的教程,谢谢。

邵奈一 原创不易,如转载请标明出处,教育是一生的事业。


发表评论

表情:
评论列表 (有 0 条评论,476人围观)

还没有评论,来说两句吧...

相关阅读