一、工具类及配置文件准备工作

1.1 引入jar包

使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下:

mysql

mysql-connector-java

5.1.48

1.2 jdbc.properties文件配置

在resources文件夹根目录,新增jdbc.properties配置文件,内容如下:

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mydb

user=root

password=123456

1.3 JDBCUtils工具类

在java文件夹中新增 util --> JDBCUtils.java 类,该类中获取jdbc.properties中的值。

JDBCUtils工具类主要作用是简化获取MySQL配置文件、关闭资源。

private staticString url;private staticString user;private staticString password;static{

Properties properties= newProperties();try{

properties.load(Mytest.class.getClassLoader().getResourceAsStream("jdbc.properties"));

url= properties.getProperty("url");

user= properties.getProperty("user");

password= properties.getProperty("password");

Class.forName(properties.getProperty("driver"));

}catch (IOException |ClassNotFoundException e) {

e.printStackTrace();

}

}//1.获取jdbc.properties配置文件中的数据库连接

public static Connection getConnection() throwsSQLException {returnDriverManager.getConnection(url, user, password);

}//5.定义关闭资源的方法

public static voidclose(Connection conn, Statement stmt, ResultSet rs) {if (rs != null) {try{

rs.close();

}catch(SQLException e) {}

}if (stmt != null) {try{

stmt.close();

}catch(SQLException e) {}

}if (conn != null) {try{

conn.close();

}catch(SQLException e) {}

}

}public static voidclose(Connection conn, Statement stmt) {

close(conn, stmt,null);

}

二、原生MySQL实现增删改查

2.1 语法说明

1、通过Connection获取数据库连接对象;

2、定义sql语句(一般可以在Navicat中直接执行);

3、通过获取执行sql的对象 --PreparedStatement;

4、执行sql语句:增删改使用conn的executeUpdate方法(成功返回值为int=1),查询使用executeQuery方法(返回值为ResultSet,建议使用下文的查询方法操作);

5、释放资源(执行SQL时定义的stmt、获取连接时的conn)。

2.2 新增数据 -- insertUser()

在java文件夹中新增MyService.java类,将获取数据库连接抽取出来,方法如下:

privateConnection conn;

{try{

conn=JDBCUtils.getConnection();

}catch(SQLException e) {

e.printStackTrace();

}

}

在MyService.java类中新增 insertUser方法,具体如下

String sql = "INSERT INTO user values (4, '腾讯科技', 'xinfeng37812', '2009-11-16', '广东省深圳市')";

PreparedStatement stmt=conn.prepareStatement(sql);int count =stmt.executeUpdate(sql);

JDBCUtils.close(conn, stmt);return count;

2.2 修改数据 -- updateById()

String sql = "update user set password = 567875 where id = 2";

PreparedStatement stmt=conn.prepareStatement(sql);int count =stmt.executeUpdate(sql);

JDBCUtils.close(conn, stmt);return count;

2.3 删除数据 -- deleteUser()

String sql = "delete from user where id = 5";

PreparedStatement stmt=conn.prepareStatement(sql);int count =stmt.executeUpdate(sql);

JDBCUtils.close(conn, stmt);return count;

2.4 查询数据 -- findAll()

前提:新建 entity --> User.java 实体类,并获取getter&setter、toSting方法;

String sql = "select * from user";

PreparedStatement stmt=conn.prepareStatement(sql);

ResultSet count=stmt.executeQuery(sql);

User user= null;

List arr = new ArrayList<>();while(count.next()){

Long id= count.getLong("id");

String username= count.getString("username");

String password= count.getString("password");

Date birthday= count.getDate("birthday");

String address= count.getString("address");

user= newUser();

user.setId(id);

user.setUsername(username);

user.setPassword(password);

user.setBirthday(birthday);

user.setAddress(address);

arr.add(user);

}

JDBCUtils.close(conn, stmt, count);return arr;

三、原生MySQL语句的缺点及数据库连接池

3.1 原生MySQL语句的缺点

1、每一次查询都要新增通道,关闭通道,效率太低。实际项目中都会用数据库连接池进行优化;

2、实际项目中使用最多的就是查询,但是将查询的ResultSet结果,进行封装的代码过于臃肿。

3.2 c3p0和druid连接池技术

数据库连接池其实就是一个容器,在java中,使用getConnection方法代替Connection,实现节约资源,用户访问高效目的,但是代码本身与原生并无本质的减少。

3.2.1 c3p0使用

需要导入两个jar包,maven引用方式如下:

com.mchange

c3p0

0.9.5.5

com.mchange

mchange-commons-java

0.2.15

配置文件必须在resources文件夹根目录,且名称必须为 c3p0.properties 或者 c3p0-config.xml,因此无需手动加载配置文件:

//1.创建数据库连接池对象

DataSource ds = newComboPooledDataSource();//2. 获取连接对象

Connection conn = ds.getConnection();

3.2.2 druid使用

只需要一个jar包,maven引入方式如下:

com.alibaba

druid-spring-boot-starter

1.1.9

配置文件名称任意,但需要是.properties形式的,因此需要获取配置文件位置,具体使用方式如下:

//1.加载配置文件

Properties pro = newProperties();

InputStream is= DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");

pro.load(is);//2.获取连接池对象

DataSource ds =DruidDataSourceFactory.createDataSource(pro);//3.获取连接

Connection conn = ds.getConnection();

3.3 JDBCUtils工具类的改造

以使用druid为例,在使用数据库连接池时的工具类,主要有三种方法:

1. 获取连接方法:通过数据库连接池获取连接

2. 释放资源

3. 获取连接池的方法

public classJDBCUtils {private staticDataSource ds;static{try{

Properties pro= newProperties();

pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));

ds=DruidDataSourceFactory.createDataSource(pro);

}catch(IOException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}

}public static Connection getConnection() throwsSQLException {returnds.getConnection();

}public static voidclose(Statement stmt, Connection conn) {

close(null, stmt, conn);

}public static voidclose(ResultSet rs, Statement stmt, Connection conn) {if (rs != null) {try{

rs.close();

}catch(SQLException e) {

e.printStackTrace();

}

}if (stmt != null) {try{

stmt.close();

}catch(SQLException e) {

e.printStackTrace();

}

}if (conn != null) {try{

conn.close();//归还连接

} catch(SQLException e) {

e.printStackTrace();

}

}

}public staticDataSource getDataSource() {returnds;

}

}

java连接mysql数据库连接池_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...相关推荐

  1. vue访问php时做增删改查,node连接mysql生成接口,vue通过接口实现数据的增删改查(一)...

    武汉加油遇新是直朋能到分览支体调!中国加油! 想必许多干用是处框它观有理近货框万理架是察放是近学vue的小伙伴想连接数据库,对数据进行增删改查吧,奈何不知道怎么实现.作为一路踩坑的我,为大家带来我的一 ...

  2. MySQL基础(三)表关系及数据的增删改查

    这一部分主要使用SQL中的DML,数据库操作语言(data manipulation language),对数据库数据进行增.删.改.查操作,作为前提,先介绍关系型数据库中的表关系. 关系型数据库(R ...

  3. 封装mysql数据库操作系统_封装MySQL的单例,连接数据库并对数据进行增删改查操作...

    //私有的构造方法用来阻止在类的外部实例化private function __construct($param){$this->initData($param);$this->conne ...

  4. Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例

    学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...

  5. java从入门到精通二十四(三层架构完成增删改查)

    java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...

  6. php mysql增删改查实例_php连接数据库实现用户数据的增删改查实例

    下面小编就为大家带来一篇使用PHP连接数据库_实现用户数据的增删改查的整体操作示例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 main页面(主页面) 代号 姓名 性 ...

  7. SpringBoot+Mysql+MDUI实现数据的增删改查和列表操作及单,多文件上传实例

    SpringBoot+Mysql+MDUI实现数据的增删改查和列表操作及单,多文件上传实例 开源地址:https://gitee.com/jfkjrym/demo.git evan原创内容!evan原 ...

  8. Java操作Mongodb数据(增删改查聚合查询)

    文章目录 一.Java操作MongoDB 二.使用步骤 1.基础配置 2.实体类 3.MongoDB表数据 3.增删改查聚合查询 总结 一.Java操作MongoDB 上一篇文章介绍了,如何在本地使用 ...

  9. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)...

    最近看老罗的视频,跟着完成了利用Java操作MySQL数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

最新文章

  1. 别人家的公司的 1024 程序员节 ! 羡慕了!
  2. 未入选新一轮“双一流”!两所高校官宣
  3. Swagger增强神器:Knife4j!用它轻松实现接口搜索、Word下载、接口过滤...
  4. windows服务守护进程bat脚本、windows窗体守护进程bat脚本
  5. 分治法:关于选择算法,找最大,找最小,同时找最大和最小,找第二大
  6. 代码覆盖率测试工具:gcov和lcov的使用
  7. echo中使用逗号和句号的区别
  8. 【Python爬虫】一个简单的网络爬虫
  9. 安卓开发仿微信图片拖拽_Android 仿微信朋友圈发表图片拖拽和删除功能
  10. Ubuntu14.04快速搭建SVN服务器及日常使用
  11. 二叉排序树的插入 java_leetcode刷题笔记-701. 二叉搜索树中的插入操作(java实现)...
  12. android 扫雷小游戏
  13. Kafka | Kafka中如何实现死信队列重试队列
  14. 【WPS】折线图数据点上添加标记(三角形、正方形、菱形等)
  15. EfficientNet理论讲解
  16. 【C基础练习题】Week9:凯撒密码 | 按空格切分字符串 | 单词折半拆分
  17. iview表格表头上添加icon图标
  18. 二维码怎么制作?手把手教你制作生成
  19. Git分布式版本控制工具【IDEA版】【安装和使用以及上传代码到Gitee】(一篇文章精通系列)
  20. 为何电脑下载mp3等音乐导入U盘后无法在汽车上播放?网易云等音乐软件夹带私货!!

热门文章

  1. 实体类的动态生成(一)
  2. Microsoft的现代数据管理
  3. 配置高性能ElasticSearch集群的9个小贴士
  4. pureref 平移用不了_关于参考图管理神器 PureRef 的一些快捷键
  5. [转]2022 Flutter 宣布发布 Windows 正式版
  6. 【遥感数字图像处理】基础知识:第五章 遥感图像增强处理方法总结
  7. Fisher–Yates shuffle 算法
  8. Android之解决远程拍照不打开activity用其它方式获取surfaceView
  9. python 数据分析找到老外最喜欢的中国美食【完整代码】
  10. Android图片上倒计时,Android自定义照相机倒计时拍照