JDBC连接Mysql数据库过程之代码实战【一条命途多舛的SQL】
上一篇我们已经了解了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】相关推荐
- Java新手入门200例124之用JDBC连接Mysql数据库
文章目录 作者简介 引言 导航 热门专栏推荐 一.创建web项目 二.加入Mysql驱动 三.编写查询代码 四.测试查询代码 五.编写插入代码 六.编写修改代码 七.编写删除代码 小结 导航 热门专栏 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- JDBC连接MySQL数据库代码模板
下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...
- JDBC连接MySQL数据库及示例
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- JDBC连接 Mysql数据库
IDEA使用JDBC连接Mysql数据库 在项目中添加连接Mysql数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码. 完整代码 package com.zsh ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- java mysql教程基于_java基于jdbc连接mysql数据库功能实例详解
本文实例讲述了java基于jdbc连接mysql数据库的方法.分享给大家供大家参考,具体如下: 一.JDBC简介 Java 数据库连接,(Java Database Connectivity,简称JD ...
- mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...
分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse ...
- mysql 数据库dbhelp_使用JDBC连接MYSQL数据库的问题
------------这是源代码-------- package util; import java.sql.Connection; import java.sql.DriverManager; p ...
最新文章
- 一份完整的数据科学竞赛指南!
- ComponentOne Wijmo Editor 在光标处添加文本
- ASP-常量,asp运算符,比较运算符
- Python 域名转IP(可包含http、https)
- 一步步安装Ubuntu 13.10服务版
- 优化在深度学习中的挑战
- 第八届蓝桥杯第一题购物单
- coap 返回版本信息_CoAP 协议解析说明(转)
- (十)瑞芯微rk3568 中qt工程ffmpeg 拉取rtsp视频流
- 2021-07-26 NLP词嵌入
- 修改log4j的日志文件的日志级别
- origin 页边距紧凑设置
- u盘删除的文件怎么恢复
- 18.数据统计之分组对象与apply函数
- 企业微信异常java.security.InvalidKeyException:illegal Key Size的解决方案,提供jce_policy-8下载
- matlab保存pgm图形,pgm格式文件及其在matlab中的读取存储方法(1)
- 无线连接安卓手机进行app自动化
- 2015(毕业)秋季校园招聘各种企业笔试面试心得
- 解析Excel获取单元格数据
- 小米air2se耳机只有一边有声音怎么办_盘点2020半入耳蓝牙耳机排名
热门文章
- 计算机网络(七)网络安全
- MySQL 基础教程[6]
- aka鉴权 ims_IMS的AKA鉴权机制
- Hive 结构[笔记2]
- 爱数联手21世纪教育网共拓教育业新篇章
- 登录界面的验证登录以及session的使用
- 基于单片机的PT100热电偶测温仿真设计(#0002)
- nolo手柄配对不上_nolo手柄怎么纠正
- oracle 10g clusterware,安装Oracle10g Clusterware遇到的一点问题
- 实验吧[WEB]——what a fuck!这是什么鬼东西?