一、JDBC ORM 对象和关系数据库的映射

个人看了之后认为这个知识点可能再jdbc中是最重要的知识点之一,毕竟之前的sql语句的插入仅仅只是利用eclipse简单操作数据库,而ORM才可以真正称得上数据库和java的交互操作,可以通过java的类和方法来实现对数据库操作的函数调用。

这里我们构造方法,通过id查找每个角色的任务

接下来我再写插入、更新以及显示当前数据表中所有数据的方法

有个代码的大坑点一定要注意,sql语句中加字符串连接一定要打单引号,我update方法中就是连接字符串时没有使用单引号导致调试了很久。

二、dao

无非就是java类的封装,接口的使用

package jdbc;import java.sql.Connection;import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;import character.novel;public class noveldao implements dao{public noveldao() {try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}public Connection getConnection() throws SQLException {return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root","123456");}public void see() {try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "123456");Statement s = c.createStatement();) {String sql = "select * from novel";ResultSet rs = s.executeQuery(sql);while (rs.next()){String name = rs.getString(2);String area = rs.getString(3);String task = rs.getString(4);System.out.println(name + " " + area + " " + task);}} catch (SQLException e) {e.printStackTrace();}}public void update(int i ,String t){try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();} try(Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "123456");Statement s = c.createStatement();) { String sql = "update novel set task = '" + t + "' where id = '" + i + "'";                    s.execute(sql);} catch (SQLException e) {e.printStackTrace();} }public void add(novel n){try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();} String sql = "insert into novel values(null,?,?,?)";try(Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "123456");PreparedStatement ps = c.prepareStatement(sql);) {                     ps.setString(1, n.name);ps.setString(2, n.area);ps.setString(3, n.task);ps.execute();} catch (SQLException e) {e.printStackTrace();} }
}

这里与java语法的接口和抽象类有相关联,最近需要重新过一遍java基础语法:

抽象类:
抽象类:含有abstract修饰符的class。抽象类不能创建实例对象,类中的方法不必是抽象的,但是抽象类中定义的抽象方法必须在子类中实现,所以抽象类不能有抽象构造方法或抽象静态方法。
接口:
可以说成是抽象类的一种特例,接口不能创建实例对象,接口中的所有方法都必须是抽象的。接口中的方法默认为public abstract类型,接口中的成员变量类型默认为public static final。

区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量。
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
8. 如果一个类中有抽象方法,那么这个类只能是抽象类。但是抽象类中可以没有抽象方法

三、数据库连接池

1、传统连接

总结一下,就是需要就开连接,用完就关,见一个开一个

2、使用池

总结一下,就是规定了连接上限防止卡顿,连接不会关闭,排队轮流用

3、ConnectionPool构造方法和初始化

1. ConnectionPool() 构造方法约定了这个连接池一共有多少连接

2. 在init() 初始化方法中,创建了size条连接。 注意,这里不能使用try-with-resource这种自动关闭连接的方式,因为连接恰恰需要保持不关闭状态,供后续循环使用

3. getConnection, 判断是否为空,如果是空的就wait等待,否则就借用一条连接出去

4. returnConnection, 在使用完毕后,归还这个连接到连接池,并且在归还完毕后,调用notifyAll,通知那些等待的线程,有新的连接可以借用了。

第六周作业完成,一个半小时相关推荐

  1. 2019春第六周作业

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 2019春第六周作业 我在这个课程的目标是 掌握指针变量的基本运算:理解指针作为函数参数的作用:掌握如何使用指针实现函数调用返回多个值. ...

  2. 20189221 2018-2019-2 《密码与安全新技术专题》第六周作业

    20189221 2018-2019-2 <密码与安全新技术专题>第六周作业 课程:<密码与安全新技术专题> 班级: 201892 姓名: 郭开世 学号:20189221 上课 ...

  3. 2018-2019-2 20189206 《网络攻防实践》 第六周作业

    2018-2019-2 20189206 <网络攻防实践> 第六周作业 课本学习 TCP/IP网络协议栈攻击 网络安全属性与攻击模式 机密性 保护网络中的信息安全,通常使用加密算法 完整性 ...

  4. 马云缺席的一个半小时,李彦宏和马化腾都聊了什么

     马云缺席的一个半小时,李彦宏和马化腾都聊了什么 搜狐IT 文/杨舒芳 今天上午,科技圈儿的一个大party,IT领袖峰会又嗨起来了.一个传统是,BAT大佬们同台对话,但是今年马云在北京玩着,所以 ...

  5. 20189200余超 2018-2019-2 移动平台应用开发实践第六周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第六周作业 Android简介.活动.UI组件 1.Android系统架构 这是Android系统架构图,够一目了然了吧,Androi ...

  6. Python第六周作业

    Python第六周作业 1. 正则表达式的点星匹配 2. 计算函数曲线与x轴包围的面积 3. 哥德巴赫猜想 4. 鸡兔同笼B 5. 与7无关的数 6. 完美立方数 7. 高次方程求根 8. 在终端输出 ...

  7. 2018-2019-2 20189221 《网络攻防技术》第六周作业

    2018-2019-2 20189221 <网络攻防技术>第六周作业 视频学习(21-25) KaliSecurity-密码攻击之在线攻击工具 1.Cewl 可以通过爬行网站获取关键信息创 ...

  8. 2017-2018-2 20179205 《网络攻防技术与实践》第六周作业

    <网络攻防技术与实践>第六周作业 视频学习总结 一.kali密码攻击之在线工具攻击 密码攻击是安全测试中必不可少的一环,而在线攻击多为对一个服务远程连接并使用用户名与密码破解. 1.cew ...

  9. 《密码与安全新技术专题》第六周作业

    学号 2018-2019-2 <密码与安全新技术专题>第六周作业 课程:<密码与安全新技术专题> 班级: 92班 姓名:张宇翔 学号:20189211 上课教师:谢四江 上课日 ...

  10. Python123平台第六周作业

    Python123平台第六周作业 #1.数字不同数之和 题目描述:获得用户输入的一个整数N,输出N中所出现不同数字的和.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬ ...

最新文章

  1. 如何在App中实现朋友圈功能之二快速实现用户信息的自定义——箭扣科技Arrownock...
  2. 10.6监控io性能10.7free命令10.8ps命令10.9查看网络状态10.10linux抓包
  3. python matplotlib模块——绘制三维图形、三维数据散点图
  4. 过渡效果_12个酷炫创意的动画过渡效果AE模板
  5. element ui 前台模板_SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示...
  6. 中大型计算机代表型号,目前个人计算机主要机型.doc
  7. 搭建kafaka集群
  8. win7用VMware安装CentOs7搭建Linux环境
  9. 去除WINRAR的广告
  10. 运用mysql实现工资管理系统_企业工资管理系统的设计与实现(MySQL)
  11. 2022年3月23日蜻蜓q旗舰版v1.2.1重大性能更新-优化加载列表数据方式-更加丝滑-后端增加goeasy
  12. win10安装nessus8.10
  13. 130多个免费接口全部开放,涵盖天气数据、环境数据、旅游景点数据、位置数据、雷达、云图等等,可在线直接提供服务,免费的服务接口
  14. canvas图片合成模糊变清晰的方法
  15. arcgis图层合并裁剪
  16. 雅虎邮箱客户端服务器设置
  17. docker-compose build、gradlew build、docker-compose up的个人理解
  18. Redis源码阅读笔记(二)list双向链表结构
  19. python爬取12306_python爬取12306列车信息
  20. 怎么用python绘制柱状图_如何用python快速简单的制作柱状图?

热门文章

  1. 专利质量及价值类型分析
  2. 旅游网项目案例以及源码
  3. suricata之linux编译
  4. 多图像平均法去噪MATLAB,关于多图像平均法降噪问题的全面分析 - 全文
  5. Ustore在openGauss闪亮登场,重构openGauss数据存储的灵魂
  6. 1295. Crazy Notions
  7. 分析:对QQ、ICQ发展前景的判断
  8. XSHELL使用小技巧
  9. 90页第三题,创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 ,编程利用Rectangle输出一个矩形的
  10. 斯科特.杨《如何高效学习》