Java面向对象程序设计 课件 项目 7 从学生管理系统走进 Java 数据库连接_第1页
Java面向对象程序设计 课件 项目 7 从学生管理系统走进 Java 数据库连接_第2页
Java面向对象程序设计 课件 项目 7 从学生管理系统走进 Java 数据库连接_第3页
Java面向对象程序设计 课件 项目 7 从学生管理系统走进 Java 数据库连接_第4页
Java面向对象程序设计 课件 项目 7 从学生管理系统走进 Java 数据库连接_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目七从学生管理系统走进Java数据库连接Java面向对象程序设计项目引导案例某院校学生人数逐渐增加,对学生信息的维护难度也逐渐增加,原先传统手工记录的方式既费时耗力又容易出错,这时,开发一个学生管理系统就显得尤为迫切,通过学生管理系统维护学生的基本信息,操作简单又不易出错,是管理学生信息的重要工具。项目背景项目引导案例本项目作为编程学习的经典项目,目的是通过开发一个学生管理系统,实现学生信息的存储、删除、查询、修改和等功能,提高管理效率和数据准确性。对初学者更好地掌握Java编程语言具有多方面的重要价值。在完成项目的过程中,学习者不仅能巩固之前章节的所学知识,还能学会如何使用JDBC、ApacheDbUtils操作关系型数据库,为后续更复杂的技术学习奠定坚实基础。JDBCApacheDbUtilsMySQL任务一MySQL的安装与JDBC的使用

Java面向对象程序设计职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施05熟练掌握MySQL的下载、安装;熟练掌握JDBC操作数据库的方法。掌握MySQL的基本操作;掌握JDBC的常用API。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施05本任务聚焦于开发一个简易版的学生管理系统,项目中通过JDBC操作MySQL数据库,实现对学生信息的增删改查等基本操作,通过完成该项目,学员可以掌握JDBC的基本操作步骤,为后续学习打下坚实的基础。任务描述任务要求完成MySQL的下载和安装;完成创建任务中使用的数据库与数据表;完成使用JDBC开发学生管理系统的任务。任务描述与要求02职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施0503知识储备1Maven的使用2MySQL基础1JDBC简介和常用API31MySQL简介2MySQL的发展历程033MySQL基本操作MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。03

MySQL简介1MySQL简介2MySQL的发展历程033MySQL基本操作03

MySQL的发展历程MySQL作为全球最流行的开源关系型数据库管理系统之一,自1995年诞生以来经历了丰富的发展历程。以下将从MySQL的版本演进与技术里程碑的角度介绍MySQL的发展历程。版本发布时间重大改进与特性1.01995仅供内部使用的初始版本3.11.11996首个公开版本,支持基础SQL3.231999集成BerkeleyDB存储引擎,奠定可插拔架构基础4.02002引入InnoDB存储引擎,支持事务5.02005支持存储过程、触发器、视图、游标等高级特性5.12008事件调度器、基于行的复制、分区表5.52010InnoDB成为默认引擎,性能显著提升5.72015JSON支持、GIS增强、优化器改进8.02018窗口函数、CTE、原子DDL、JSON增强1MySQL简介2MySQL的发展历程033MySQL基本操作SQL(StructuredQueryLanguage,结构化查询语言)是用于管理和操作关系型数据库的标准编程语言,广泛应用于数据查询、插入、更新、删除及数据库结构管理等场景。03MySQL基本操作(1)进入MySQL环境

如果要在命令行模式(例如Windows中的DOS)下操作MySQL,则必须首先进入MySQL环

境,打开DOS命令行,输入以下命令敲回车后输入密码,即可进入MySQL环境。命令如下:mysql-hMySQL服务器地址-u用户名-p03MySQL基本操作(2)创建数据库createdatabase数据库名称[defaultcharacterset'utf8'];创建一个名为school_db的数据库,并指定数据库的编码为‘utf8’。如图创建一个名为school_db的数据库:(3)进入指定名称的数据库

要想使用某个数据库,则必须先进入该数据库。命令为:use数据库名称;03MySQL基本操作(4)创建表的SQL:createtable表名称(字段名1数据类型约束,字段名2数据类型约束,字段名3数据类型约束,[其他字段…]);(5)添加记录的SQL:insertinto表名称(字段A,字段B...)values(值A,值B...);03MySQL基本操作(6)查询记录的SQLselect字段名1,字段名2,...from表名称[where条件];可以根据需要查询表中指定的字段,如果查询字段使用星号*代替,则代表查询所有字段,方括号[]中的where是可选项,表示查询符合条件的记录。例如,分别查询的是school表中的所有学校和地址在上海的学校,星号*代表查询所有字段:03MySQL基本操作(7)修改记录的SQLupdate表名称set字段名1=修改的值1[,字段名2=修改的值2...][where条件];例如,修改id为3的学校名称为’上海交大’,然后再查寻:03MySQL基本操作(8)删除记录的SQLdeletefrom表名称[where条件];例如,删除所有地址在上海的学校,然后查询,发现地址在上海的学校已经被删除了:03知识储备1Maven的使用2MySQL基础1JDBC简介和常用API3Maven是一个能管理下载第三方依赖包的软件,我们可以将它集成在IDEA中,后续在使用JDBC等模块需要导入依赖时,便可以使用Maven进行依赖导入。我们本次安装的是maven的3.6.0版本。首先我们找到Maven的3.6.0版本安装包apache-maven-3.6.0-bin.zip,直接解压即可。解压完成之后找到settings.xml文件,修改配置文件的内容。注意,涉及到的路径尽量都选择英文且无空格的路径。03Maven的使用(1)修改本地仓库

找到<localRepository></localRepository>标签,在里面添加一个Windows的路径,后续下载的依赖包都会放在这个路径下。(2)修改远程仓库

找到<mirrors></mirrors>标签,可以添加远程仓库。可以让我们后续下载从国内地址下载,减少网络环境的影响。03Maven的使用2<mirrors><mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url></url></mirror>

其他远程仓库省略……</mirrors>以添加阿里云仓库为例,其他远程仓库的添加方法类似03Maven的使用(3)配置环境变量保存配置文件内容之后,我们可以配置环境变量,在系统变量的PATH中添加好Maven的bin目录即可。配置完成后,可以在Windows的cmd命令行中输入mvn--version,如果提示版本信息,说明环境已经没问题。(4)IDEA中集成Maven打开IDEA,再创建新项目时可以选择NewProject-Java-Buildsystem,选择Maven项目进行创建。在项目中,我们找到File-->Settings-->Build,Execution,Deployment-->BuildTools-->Maven,配置里面的如下三项。Mavenhomepath家目录:选择Maven安装路径。Usersettingsfile用户配置文件:选择Maven中的settings.xml文件。Localrepository本地仓库:选择我们配置文件中配置的本地仓库地址即可。配置成功之后我们就可以在项目的pom.xml中导入相关依赖,完成第三方包的导入。03知识储备1Maven的使用2MySQL基础1JDBC简介和常用API31JDBC简介2JDBC的常用API03JDBC(JavaDatabaseConnectivity)是Java平台连接和操作关系型数据库的标准API,通过统一的接口实现SQL查询、事务管理、结果集处理等核心功能。通过JDBC使得Java应用可以无缝对接多种数据库(如MySQL、Oracle等),无需针对不同数据库重写底层逻辑,显著提升开发效率和代码可维护性。如图所示为JDBC在编程应用中的作用。03JDBC简介1JDBC简介2JDBC的常用API03通过使用JDBC的API完成操作关系型数据库的目的,如下表JDBC常用API介绍所示。03JDBC的常用API核心类/接口关键方法功能描述‌DriverManagergetConnection(url,user,password)建立数据库连接,管理JDBC驱动程序ConnectioncreateStatement()

prepareStatement(sql)

setAutoCommit(false)管理数据库会话,支持事务控制和语句创建StatementexecuteQuery(sql)

executeUpdate(sql)执行静态SQL语句,返回结果集或影响行数PreparedStatementexecuteQuery()执行预编译SQL语句,返回结果集ResultSetnext()遍历和读取查询结果职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施05MySQL的安装204任务实施MySQL数据库的下载1数据库创建345环境准备使用JDBC开发学生管理系统6系统测试MySQL数据库的下载04教材选择的MySQL版本是8.3.0,是主流的一个版本。请读者在官网下载软件安装包,如图所示,单击图中的第一个文件后的Download按钮进行下载:MySQL的安装204任务实施MySQL数据库的下载1数据库创建345环境准备使用JDBC开发学生管理系统6系统测试MySQL的安装04安装MySQL时,双击mysql-8.3.0-winx64.msi安装文件,进入MySQL欢迎界面,开始进行安装,详细安装步骤见教材。需要注意的是:在安装过程中配置的MySQL默认端口为3306。MySQL的安装04在安装的过程中MySQL默认会创建一个超级用户root,需要设置root的密码:MySQL的安装04安装并配置完成后的界面如图,点击Finish即可。MySQL的安装04安装完成后,进行MySQL环境变量的配置:打开环境变量,在Path系统环境变量中添加MySQL根目录下的bin目录。点击确定后可在命令行中进行MySQL连接测试。配置Path环境变量测试连接MySQL的安装204任务实施MySQL数据库的下载1数据库创建345环境准备使用JDBC开发学生管理系统6系统测试数据库创建04本节通过实现一个学生管理系统来讲解如何通过JDBC进行数据库开发。首先通过命令行进入MySQL环境,创建一个名为mydb的数据库,如下图所示:然后进入mydb数据库,在该数据库中创建学生表,如图所示:MySQL的安装204任务实施MySQL数据库的下载1数据库创建345环境准备使用JDBC开发学生管理系统6系统测试环境准备04(1)打开IDEA,创建一个Maven项目,项目名称为StudentSystemProject,项目创建成功后的结构如图所示。环境准备04(2)在pom.xml中添加MySQLJDBC驱动依赖,如图所示:MySQL的安装204任务实施MySQL数据库的下载1数据库创建345环境准备使用JDBC开发学生管理系统6系统测试使用JDBC开发学生管理系统04publicclassStudent{privateintid;privateStringname;privateintage;privateStringemail;(构造方法、属性对应的get、set方法、toString()方法省略)}1.创建一个学生实体类创建聊天客户端04publicbooleanaddStudent(Studentstudent){Stringsql="INSERTINTOstudents(name,age,email)VALUES(?,?,?)";//创建连接try(Connectionconn=DBUtils.getConnection();//创建PreparedStatement对象PreparedStatementpstmt=conn.prepareStatement(sql)){//填充占位符pstmt.setString(1,student.getName());pstmt.setInt(2,student.getAge());pstmt.setString(3,student.getEmail());//执行操作introwsAffected=pstmt.executeUpdate();returnrowsAffected>0;}catch(SQLExceptione){e.printStackTrace();returnfalse;}2.在工具类DBUtils中编写添加学生的方法addStudent创建聊天客户端04publicStudentgetStudentById(intid){Stringsql="SELECTid,name,age,emailFROMstudentsWHEREid=?";try(Connectionconn=DBUtils.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setInt(1,id);//填充占位符try(ResultSetrs=pstmt.executeQuery()){if(rs.next()){returnnewStudent(rs.getInt("id"),rs.getString("name"),rs.getInt("age"),rs.getString("email"));}}}catch(SQLExceptione){e.printStackTrace();}returnnull;}3.编写根据ID查询学生的方法创建聊天客户端04publicList<Student>getAllStudents(){List<Student>students=newArrayList<>();Stringsql="SELECTid,name,age,emailFROMstudents";try(Connectionconn=DBUtils.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql);ResultSetrs=pstmt.executeQuery()){while(rs.next()){Studentstudent=newStudent(//将结果集的内容填充到Student对象中rs.getInt("id"),rs.getString("name"),rs.getInt("age"),rs.getString("email"));students.add(student);}}catch(SQLExceptione){e.printStackTrace();}returnstudents;}4.编写查询所有学生的方法创建聊天客户端04publicclassStudentManagementSystem{privatestaticfinalDBUtilsdbUtils=newDBUtils();privatestaticfinalScannerscanner=newScanner(System.in);publicstaticvoidmain(String[]args){System.out.println("===欢迎使用学生管理系统===");while(true){showMenu();intchoice=getChoice();switch(choice){case1:addStudent();break;case2:deleteStudent();break;(其余部分省略...)}}5.编写学生管理系统的主程序MySQL的安装204任务实施MySQL数据库的下载1数据库创建345环境准备使用JDBC开发学生管理系统6系统测试系统测试041.右键运行学生管理主程序,出现学生管理系统界面,进入学生管理系统界面2.选择1添加学生操作系统测试043.查看数据库中的表,发现新增加了一条记录职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施05AI赋能任务实施05选择适合项目的数据库产品是一个关键决策,会影响项目的性能、可扩展性和维护成本。然而,每种数据库产品都有其自身的优势和局限性,以关系型数据库为例进行说明,目前最常用的关系型数据库产品是MySQL和Oracle,但是究竟哪种数据库产品才更适合当前的项目,是要进行综合考量的,这里以豆包为例,通过提问豆包”MySQL与Oracle在项目使用中该如何选择”这个问题,帮我们找到参考答案,通过AI分析,得到MySQL与Oracle在项目中选择的“黄金法则”:选MySQL的情况:中小型项目+预算有限+业务逻辑简单(高并发读为主)+团队熟悉开源技术+云原生/分布式需求。选Oracle的情况:大型企业级项目+核心业务(高可靠性要求)+复杂事务/海量数据+预算充足+需商业支持/合规性要求。谢谢大家学习项目七从学生管理系统走进Java数据库连接Java面向对象程序设计任务二事务与ApacheDbUtils在项目中的应用

Java面向对象程序设计职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施05熟练掌握ApacheDbUtils工具包的使用;熟练掌握数据库事务在项目中的应用。掌握ApacheDbUtils工具包;掌握数据库事务。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施05本任务要求开发一个学生管理系统,在任务中要求使用ApacheDbUtils工具包进行数据库操作,为避免多用户操作时可能出现的数据一致性问题,加入了数据库事务的操作。任务描述任务要求完成ApacheDbUtils工具包的导入;完成创建任务中使用的数据库与数据表;完成使用ApacheDbUtils开发学生管理系统的任务。任务描述与要求02职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施0503知识储备1ApacheDbUtils工具包介绍2数据库事务11数据库事务简介2数据库事务的特性03数据库事务(Transaction)是指一个业务操作由多个步骤组成,这些步骤要么全部成功,要么全部失败。数据库事务是保证数据一致性和完整性的核心机制。例如:在金融领域对数据准确性要求极高,事务是防止资金异常的关键保障。用户A向用户B转账1000元,需执行“扣除A账户1000元”和“增加B账户1000元”两个操作。若中途系统故障,事务可回滚至初始状态,避免“A扣款但B未到账”或“B到账但A未扣款”的资金漏洞。03数据库事务简介1数据库事务简介2数据库事务的特性0303数据库事务的特性数据库事务(Transaction)是数据库管理系统中一组不可分割的操作集合,其核心通过ACID特性保证数据的一致性和可靠性。ACID是四个关键特性的缩写:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。以下是对每个特性的详细解析。(1)原子性(Atomicity):“要么全做,要么全不做”

原子性是事务最核心的特性,它确保事务中的所有操作要么全部成功执行,要么全部失败回滚,不存在“部分成功、部分失败”的中间状态。03数据库事务的特性(2)一致性(Consistency):事务执行前后数据“合规”

一致性指事务执行前后,数据库中的数据必须从一个合法的状态转换到另一个合法的状态,符合所有预设的业务规则和约束(如主键唯一、外键关联、数据格式校验等)。(3)隔离性(Isolation):并发事务“互不干扰”

隔离性用于解决多个事务同时操作同一批数据时的并发冲突问题,确保每个事务的执行过程“仿佛是独立进行的”,不受其他并发事务的干扰。。03数据库事务的特性(4)持久性(Durability):事务结果“永久保存”

持久性指事务一旦提交成功,其对数据库的修改就会永久保存,即使后续发生系统崩溃、断电等故障,数据也不会丢失。03知识储备1ApacheDbUtils工具包介绍2数据库事务11主要优势2核心组件03ApacheDbUtils是Apache软件基金会旗下的一个轻量级Java数据库操作工具包,它简化了JDBC(JavaDatabaseConnectivity)编程的复杂性,减少了重复代码,同时保持了JDBC的灵活性。对于需要进行数据库操作的Java项目来说,ApacheDbUtils是一个高效且易用的选择。03主要优势ApacheDbUtils对JDBC进行了一个简单封装,它的主要优势有:(1)轻量级:体积小,无依赖其他框架。(2)易用性:API设计简洁,学习成本低。(3)灵活性:不强制绑定特定设计模式,可按需使用。(4)安全性:使JDBC调用处理更容易而不会发生资源泄漏并具有更简洁的代码。1主要优势2核心组件0303核心组件以下是ApacheDbUtils核心组件的表格说明:组件类名核心功能主要方法DbUtils数据库资源工具类,负责资源管理和事务辅助

close()/closeQuietly():关闭资源loadDriver():加载驱动

commit()/rollback():事务处理QueryRunner数据库操作核心类,封装SQL执行逻辑update():执行增删改

query():执行查询

batch():批处理操作ResultSetHandler结果集处理接口,定义结果集映射规则handle(ResultSetrs):处理结果集职业能力目标01任务描述与要求02知识储备03任务实施04AI赋能任务实施05DbUtils工具库结合事务完成项目开发204任务实施引入ApacheDbUtils工具库1引入ApacheDbUtils工具库04新建一个Maven项目,并在Maven项目中的pom.xml文件中添加三个依赖库,分别是:MySQL驱动库、Druid数据库连接池、ApacheCommonsDbUtils库。如下所示:<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version><!--推荐使用较新版本--></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version></dependency><dependency><groupId>commons-dbutils</groupId><artifactId>commons-dbutils</artifactId><version>1.7</version></dependency></dependencies>DbUtils工具库结合事务完成项目开发204任务实施引入ApacheDbUtils工具库1DbUtils工具库结合事务完成项目开发04首先进入MySQL命令行界面,创建student_db数据库、进入数据库、创建student表,如下图所示:DbUtils工具库结合事务完成项目开发04publicclassStudent{privateintid;privateStringname;privateIntegerage;privateStringgender;privateStringemail;privateStringphone;privateStringgrade;privateStringclassName//构造方法、set、get、toString方法省略}1.创建Student实体类DbUtils工具库结合事务完成项目开发04driverClassName=数据库驱动类url=数据库连接地址username=连接数据库使用的用户名password=密码//其他配置为可选配置,此处省略列出2.在resources文件夹下创建数据库连接信息属性文件perties3.创建DruidDataSourceUtil类,该类通过ApacheDbUtils工具类结合Druid连接池获取数据库连接对象DbUtils工具库结合事务完成项目开发04publicclassDruidDataSourceUtil{privatestaticDruidDataSourcedataSource;//druid连接池对象

static{try{initDataSource();}catch(Exceptione){thrownewRuntimeException("初始化数据库连接池失败",e);}}privatestaticvoidinitDataSource()throwsException{Propertiesprops=newProperties();InputStreamin=DruidDataSourceUtil.class.getClassLoader().getResourceAsStream("perties");if(in==null){thrownewIOException("无法加载perties配置文件");}props.load(in);dataSource=(DruidDataSource)DruidDataSourceFactory.createDataSource(props);}}DbUtils工具库结合事务完成项目开发04publicclassTransactionManager{privatestaticfinalThreadLocal<Connection>CONNECTION_HOLDER=newThreadLocal<>();//提交事务

publicstaticvoidcommitTransaction()throwsSQLException{Connectionconn=CONNECTION_HOLDER.get();if(conn!=null&&!conn.isClosed()){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论