上一篇我们已经了解了JDBC连接Mysql的数据库操作的过程,那这一篇我们就来一下实战。

话不多说,就是干,拿起你的手,撸一下

我们先定义一些变量,这样便于后期的维护和管理,此处需要修改自己的数据库的地址和账户密码

private static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
/***  数据库连接地址*      如果出现中文乱码,请添加 【?useUnicode=true&characterEncoding=utf-8】*/
private static final String MYSQL_URL = "jdbc:mysql://192.168.31.33:3306/test?useUnicode=true&characterEncoding=utf-8";
private static final String MYSQL_USERNAME = "root";
private static final String MYSQL_PASSWORD = "123456";

1. 获取Mysql的连接

/***  获取JDBC的连接* result:* author: lwl* date: 2020/6/24 14:19*/
public Connection getConnection() {Connection con = null;try{// 加载驱动Class.forName(DRIVER_CLASS_NAME);// 获取连接con = DriverManager.getConnection(MYSQL_URL, MYSQL_USERNAME, MYSQL_PASSWORD);} catch (ClassNotFoundException e) {log.error("加载JDBC驱动异常",e);} catch (SQLException e) {log.error("获取JDBC连接异常",e);}return con;
}

2. 关闭资源方法

为什么关闭方法会在第二步呢? 因为获取方法和关闭方法是一个通用的方法,所以抽取出来做了一个基类,其他的操作类只要继承他则自动拥有这2个方法,省去很多繁琐的步骤和简化代码。

/***  关闭资源* result:* author: lwl* date: 2020/6/24 14:21*/
public void closeResource(Connection con, PreparedStatement pstmt, ResultSet rs) {//关闭资源,倒关try {if(rs != null) {rs.close();}if(pstmt != null) {pstmt.close();}if(con != null) {con.close();  //必须要关}} catch (Exception e) {log.error("关闭资源异常", e);}
}

3. 操作的数据相关

3.1 定义操作的类 User.java

@Data
@Accessors(chain = true)
public class User extends BaseModel {private String name;private String sex;private String password;private String phone;@Overridepublic String toString() {return "User{" +"id='" + getId() + '\'' +"name='" + name + '\'' +", sex='" + sex + '\'' +", password='" + password + '\'' +", phone='" + phone + '\'' +"} " + super.toString();}
}
/*** @description: 所有类的基类* @author     :lwl* @date       :2020/6/24 14:09* @version:     1.0.0*/
@Data
@Accessors(chain = true)
public class BaseModel implements Serializable {/***  主键*/private Long id;private String createUser;private Date createTime;private String modifyUser;private Date modifyTime;
}

3.2 建立User对应的数据库表

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`sex` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,`phone` varchar(255) DEFAULT NULL,`create_user` varchar(255) DEFAULT NULL,`create_time` datetime DEFAULT NULL,`modify_time` datetime DEFAULT NULL,`modify_user` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

3.3 定义操作数据库的UserJdbc

此类继承之前的JdbcUtil ,则自动拥有了获取连接和关闭资源的方法,同时自定义了新增、删除、修改、查询的方法


/*** @description: 用户的操作类* @author     :lwl* @date       :2020/6/24 15:29* @version:     1.0.0*/
@Slf4j
public class UserJdbc extends JdbcUtil {public int addUser (User user) {Connection con = getConnection();PreparedStatement psst = null;String sql = "insert into user (name, password, sex, phone) VALUES(?,?,?,?)";try{//设置的预编译语句格式psst = con.prepareStatement(sql);psst.setString(1, user.getName());psst.setString(2, user.getPassword());psst.setString(3, user.getSex());psst.setString(4, user.getPhone());log.info("---------正在执行的sql----------");log.info(psst.toString());return psst.executeUpdate();} catch (Exception e) {log.error("新增用户信息异常",e);}finally {closeResource(con, psst, null);}return 0;}public int del (long id) {Connection con = getConnection();PreparedStatement psst = null;String sql = "delete from user where id = ?";try{//设置的预编译语句格式psst = con.prepareStatement(sql);psst.setLong(1, id);log.info("---------正在执行的sql----------");log.info(psst.toString());return psst.executeUpdate();} catch (Exception e) {log.error("删除用户信息异常",e);}finally {closeResource(con, psst, null);}return 0;}public List<User> list() {List<User> list = new ArrayList<>();Connection con = getConnection();PreparedStatement psst = null;ResultSet resultSet = null;String sql = "select * from user";try{psst = con.prepareStatement(sql);log.info("---------正在执行的sql----------");log.info(psst.toString());resultSet = psst.executeQuery();// 从结果集中取数据while (resultSet.next()){long id = resultSet.getLong(1);String name = resultSet.getString(2);String sex = resultSet.getString(3);String password = resultSet.getString(4);String phone = resultSet.getString(5);User user = new User();user.setName(name).setSex(sex).setPhone(phone).setPassword(password).setId(id);list.add(user);}} catch (Exception e) {log.error("获取用户集合异常",e);} finally {closeResource(con, psst, resultSet);}return list;}public int update(User user){Connection con = getConnection();PreparedStatement psst = null;String sql = "update  user set name = ?, phone = ?, sex = ?, modify_time = now() where id = ?";try{psst = con.prepareStatement(sql);psst.setString(1, user.getName());psst.setString(2, user.getPhone());psst.setString(3, user.getSex());psst.setLong(4, user.getId());log.info("---------正在执行的sql----------");log.info(psst.toString());return psst.executeUpdate();} catch (Exception e) {log.error("更新用户信息异常",e);}finally {closeResource(con, psst, null);}return 0;}}

4. 编写测试类


/*** @description: 测试类* @author     :lwl* @date       :2020/6/24 14:28* @version:     1.0.0*/public class UserJdbcTest {public static void main(String[] args) {// 测试新增
//        addUserTest();/*** ---------正在执行的sql----------* com.mysql.cj.jdbc.ClientPreparedStatement: insert into user (name, password, sex, phone) *      VALUES('帅气的劉先生','66666666666','男','18888888888')* 运行结果:true*/// 测试删除
//        delUserTest(4);// 运行结果:true/*** 如果删除一个不存在的,则返回false** ---------正在执行的sql----------* com.mysql.cj.jdbc.ClientPreparedStatement: delete from user where id = 4* 运行结果:false**/// 测试获取集合
//        List<User> list = list();/*** 运行结果*   ---------正在执行的sql----------* com.mysql.cj.jdbc.ClientPreparedStatement: select * from user* 运行结果如下:* User{id='2'name='lwl', sex='男', password='123456', phone='18888888888'} *      BaseModel(id=2, createUser=null, createTime=null, modifyUser=null, modifyTime=null)* User{id='3'name='lwl', sex='?', password='123456', phone='18888888888'} *      BaseModel(id=3, createUser=null, createTime=null, modifyUser=null, modifyTime=null)* User{id='5'name='帅气的劉先生', sex='男', password='66666666666', phone='18888888888'} *      BaseModel(id=5, createUser=null, createTime=null, modifyUser=null, modifyTime=null)*/// 更新某个对象
//        update(6, "刘先生66666", "18800006666", "未知");/*** 运行结果:* ---------正在执行的sql----------* com.mysql.cj.jdbc.ClientPreparedStatement: update  user set name = '刘先生', *      phone = '18800001234', sex = '未知', modify_time = now() where id = 2* 运行结果:true*/}private static void addUserTest() {// 初始化数据类User user = new User();user.setName("帅气的劉先生").setPassword("66666666666").setPhone("18888888888").setSex("男");UserJdbc userJdbc = new UserJdbc();int num = userJdbc.addUser(user);// 是否成功 如果成功则返回影响的记录数System.out.println("运行结果:" + (num==1));}private static void delUserTest(long id) {UserJdbc userJdbc = new UserJdbc();int num = userJdbc.del(id);// 是否成功 如果成功则返回影响的记录数System.out.println("运行结果:" + (num==1));}private static List<User> list() {UserJdbc userJdbc = new UserJdbc();List<User> list =  userJdbc.list();// 打印输出结果System.out.println("运行结果如下:");list.forEach(System.out::println);return list;}private static void update(long id, String name, String phone, String sex) {UserJdbc userJdbc = new UserJdbc();User user = new User();user.setPhone(phone).setSex(sex).setName(name).setId(id);int num = userJdbc.update(user);System.out.println("运行结果:" + (num==1));}}

5. 总结

自此整个自测环境已经结束,以上代码都可以运行,小伙伴们快来试试吧!

JDBC连接Mysql数据库过程之代码实战【一条命途多舛的SQL】相关推荐

  1. Java新手入门200例124之用JDBC连接Mysql数据库

    文章目录 作者简介 引言 导航 热门专栏推荐 一.创建web项目 二.加入Mysql驱动 三.编写查询代码 四.测试查询代码 五.编写插入代码 六.编写修改代码 七.编写删除代码 小结 导航 热门专栏 ...

  2. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  3. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  4. JDBC连接MySQL数据库及示例

    JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  5. JDBC连接 Mysql数据库

    IDEA使用JDBC连接Mysql数据库 在项目中添加连接Mysql数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码. 完整代码 package com.zsh ...

  6. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  7. java mysql教程基于_java基于jdbc连接mysql数据库功能实例详解

    本文实例讲述了java基于jdbc连接mysql数据库的方法.分享给大家供大家参考,具体如下: 一.JDBC简介 Java 数据库连接,(Java Database Connectivity,简称JD ...

  8. mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...

    分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse ...

  9. mysql 数据库dbhelp_使用JDBC连接MYSQL数据库的问题

    ------------这是源代码-------- package util; import java.sql.Connection; import java.sql.DriverManager; p ...

最新文章

  1. 一份完整的数据科学竞赛指南!
  2. ComponentOne Wijmo Editor 在光标处添加文本
  3. ASP-常量,asp运算符,比较运算符
  4. Python 域名转IP(可包含http、https)
  5. 一步步安装Ubuntu 13.10服务版
  6. 优化在深度学习中的挑战
  7. 第八届蓝桥杯第一题购物单
  8. coap 返回版本信息_CoAP 协议解析说明(转)
  9. (十)瑞芯微rk3568 中qt工程ffmpeg 拉取rtsp视频流
  10. 2021-07-26 NLP词嵌入
  11. 修改log4j的日志文件的日志级别
  12. origin 页边距紧凑设置
  13. u盘删除的文件怎么恢复
  14. 18.数据统计之分组对象与apply函数
  15. 企业微信异常java.security.InvalidKeyException:illegal Key Size的解决方案,提供jce_policy-8下载
  16. matlab保存pgm图形,pgm格式文件及其在matlab中的读取存储方法(1)
  17. 无线连接安卓手机进行app自动化
  18. 2015(毕业)秋季校园招聘各种企业笔试面试心得
  19. 解析Excel获取单元格数据
  20. 小米air2se耳机只有一边有声音怎么办_盘点2020半入耳蓝牙耳机排名

热门文章

  1. 计算机网络(七)网络安全
  2. MySQL 基础教程[6]
  3. aka鉴权 ims_IMS的AKA鉴权机制
  4. Hive 结构[笔记2]
  5. 爱数联手21世纪教育网共拓教育业新篇章
  6. 登录界面的验证登录以及session的使用
  7. 基于单片机的PT100热电偶测温仿真设计(#0002)
  8. nolo手柄配对不上_nolo手柄怎么纠正
  9. oracle 10g clusterware,安装Oracle10g Clusterware遇到的一点问题
  10. 实验吧[WEB]——what a fuck!这是什么鬼东西?