当前位置:   article > 正文

【JDBC】学习笔记__案例_import com.itheima.domain.student;

import com.itheima.domain.student;
  • JDBC入门
  • JDBC功能类详解
  • JDBC案例
  • JDBC工具类
  • JDBCSQL注入攻击
  • JDBC事务

JDBC入门

概念:是一种用于执行java语句的API

本质:一套帮助开发人员实现不同关系型数据库链接的规范(接口)

1、程序案例:

  1. 导入jar包
  2. 注册驱动
  3. 获取数据库连接(已经提前准备好一个案例数据库)
  4. 获取执行者对象
  5. 执行sql语句返回结果
  6. 处理结果
  7. 释放资源    

总结:首先注册驱动,然后获得一个数据库连接的对象connection,通过使用该对象获得一个执行者对象,然后改执行者对象可以执行sql语句。最后记得释放资源。

代码如下:

  1. package com.itheima01;
  2. import com.mysql.jdbc.Driver;
  3. import java.sql.*;
  4. import java.util.Collection;
  5. public class JDBCDemo01 {
  6. public static void main(String[] args) throws Exception {
  7. //1 导入jar包
  8. //2 注册驱动
  9. Class.forName("com.mysql.jdbc.Driver");
  10. //3 获取数据库连接
  11. Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/study", "root", "123456");
  12. //4 获取执行者对象
  13. Statement statement = connection.createStatement();
  14. //5 执行sql语句返回结果
  15. String sql = "select * from student";
  16. ResultSet resultSet = statement.executeQuery(sql);
  17. //6 处理结果
  18. while (resultSet.next()){
  19. System.out.println(resultSet.getInt("sid") + "\t" + resultSet.getString("name"));
  20. }
  21. //7 释放资源
  22. connection.close();
  23. statement.close();
  24. resultSet.close();
  25. }
  26. }

输出结果如下:


JDBC功能类详解

Connection (数据库连接对象)

        1、获取执行者对象:

                ①获取预编译执行者对象

                ②获取普通执行者对象

        2、管理事务

                ①开启事务: setAutoCommit(bool autoCommit);参数是false,则开启事务。

                ②提交事务:commit();

                ③回滚事务:rollback();

       3、释放资源

statement (执行者对象)

        1、执行sql语句的对象:

                ①DML语句: int executeUpdata(String sql):

                        返回值int: 影响的行数;

                        参数sql:insert、updata、delete 语句;

                ②DQL语句:ResultSet executeQuery(String sql);

                        返回值ResultSet:封装的查询结果;

                        参数sql:可以执行的select语句;

        2、释放资源

ResultSet(结果集对象)

        1、Result结果集对象:

                ①判断结果集是否有数据:

                        next():如果有数据返回true,并将索引只想下一行。没有数据返回false。

                ②获取结果集中数据

JDBC案例 

案例需求: 使用JDBC完成对student表的CRUD操作

 

数据准备:

       ①创建数据库和数据表

       ②创建dao domain service controller

                            

             

需求一:查询所有的学生信息

step1:首先创建学生类(domain数据表对象层)

  1. package com.itheima02.domain;
  2. public class Student {
  3. private Integer sid;
  4. private String name;
  5. private String sex;
  6. //无参构造
  7. //有参构造
  8. //get set
  9. //toString
  10. }

step2:创建学生操作接口,学生操作接口的实现类(编写dao数据访问层)

  1. package com.itheima02.dao;
  2. import com.itheima02.domain.Student;
  3. import java.util.ArrayList;
  4. public interface StudentDao {
  5. //查询所有学生信息
  6. public abstract ArrayList<Student> findAll();
  7. //条件查询,根据id获取学生信息
  8. public abstract Student findById(Integer sid);
  9. //新增学生信息
  10. public abstract int insert(Student student);
  11. //修改学生信息
  12. public abstract int update(Student student);
  13. //删除学生信息
  14. public abstract int delete(Integer sid);
  15. }
  1. //接口的实现类
  2. package com.itheima02.dao;
  3. import com.itheima02.domain.Student;
  4. import java.sql.*;
  5. import java.util.ArrayList;
  6. public class StudentDaolmpl implements StudentDao{
  7. @Override
  8. public ArrayList<Student> findAll() {
  9. ArrayList<Student> list = new ArrayList<>();
  10. Connection connection = null;
  11. Statement statement = null;
  12. ResultSet resultSet = null;
  13. try {
  14. //1 注册驱动
  15. Class.forName("com.mysql.jdbc.Driver");
  16. //2 获取数据库链接
  17. connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/study", "root", "123456");
  18. //3 获取执行者对象
  19. statement = connection.createStatement();
  20. //4 执行sql语句并且接受返回的结果集
  21. String sql = "select * from student";
  22. resultSet = statement.executeQuery(sql);
  23. //5 处理结果集
  24. while (resultSet.next()){
  25. Integer sid = resultSet.getInt("sid");
  26. String name = resultSet.getString("name");
  27. String sex = resultSet.getString("sex");
  28. // 封装成Student对象
  29. Student student = new Student(sid, name, sex);
  30. // 将student 放入集合中
  31. list.add(student);
  32. System.out.println();
  33. }
  34. //6 释放资源(不能放在try里面实现,要在finally里面)
  35. }catch (Exception e){
  36. e.printStackTrace();
  37. }finally {
  38. if (connection != null){
  39. try {
  40. connection.close();
  41. }catch (SQLException e){
  42. e.printStackTrace();
  43. }
  44. }
  45. if (statement != null){
  46. try {
  47. statement.close();
  48. }catch (SQLException e){
  49. e.printStackTrace();
  50. }
  51. }
  52. if (resultSet != null){
  53. try {
  54. resultSet.close();
  55. }catch (SQLException e){
  56. e.printStackTrace();
  57. }
  58. }
  59. }
  60. return list;
  61. }
  62. @Override
  63. public Student findById(Integer sid) {
  64. return null;
  65. }
  66. @Override
  67. public int insert(Student student) {
  68. return 0;
  69. }
  70. @Override
  71. public int update(Student student) {
  72. return 0;
  73. }
  74. @Override
  75. public int delete(Integer sid) {
  76. return 0;
  77. }
  78. }

 step3:Service接口 与service实现类

  1. //service的实现类
  2. //service调用dao
  3. package com.itheima02.service;
  4. import com.itheima02.dao.StudentDao;
  5. import com.itheima02.dao.StudentDaolmpl;
  6. import com.itheima02.domain.Student;
  7. import java.util.ArrayList;
  8. public class StudentServicelmpl implements StudentService{
  9. private StudentDao dao = new StudentDaolmpl();
  10. @Override
  11. public ArrayList<Student> findAll() {
  12. return dao.findAll();
  13. }
  14. @Override
  15. public Student findById(Integer sid) {
  16. return null;
  17. }
  18. @Override
  19. public int insert(Student student) {
  20. return 0;
  21. }
  22. @Override
  23. public int update(Student student) {
  24. return 0;
  25. }
  26. @Override
  27. public int delete(Integer sid) {
  28. return 0;
  29. }
  30. }
  1. package com.itheima02.service;
  2. import com.itheima02.domain.Student;
  3. import java.util.ArrayList;
  4. public interface StudentService {
  5. //查询所有学生信息
  6. public abstract ArrayList<Student> findAll();
  7. //条件查询,根据id获取学生信息
  8. public abstract Student findById(Integer sid);
  9. //新增学生信息
  10. public abstract int insert(Student student);
  11. //修改学生信息
  12. public abstract int update(Student student);
  13. //删除学生信息
  14. public abstract int delete(Integer sid);
  15. }

step4:控制层

  1. package com.itheima02.controller;
  2. import com.itheima02.domain.Student;
  3. import com.itheima02.service.StudentService;
  4. import com.itheima02.service.StudentServicelmpl;
  5. import org.junit.Test;
  6. import java.util.ArrayList;
  7. public class StudentController {
  8. private StudentService service = new StudentServicelmpl();
  9. @Test
  10. public void findAll(){
  11. ArrayList<Student> list = service.findAll();
  12. for (Student student: list){
  13. System.out.println(student);
  14. }
  15. }
  16. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/649951
推荐阅读
相关标签
  

闽ICP备14008679号