赞
踩
一、工具类及配置文件准备工作
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;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。