java jdbc连接mysql数据库实现增删改查操作

 更新时间:2016年07月10日 10:55:00   转载 作者:Alan丶Lee  
这篇文章主要为大家详细介绍了java jdbc连接mysql数据库实现增删改查操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate、Mybatis。

但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查的。

回归正题,先来看看我们的开发环境:

Java语言、Eclipse开发工具、Mysql数据库、Navicat数据库可视化工具。 

开发环境的安装搭建及使用请自己查阅资料(很简单的),这里不详细阐述。 

第一步,创建数据库,利用Navicat数据库可视化工具随便建立一个数据库,在库中建立一张表,表里给几个字段(记得给个id字段,唯一主键,自增序列),再随便给上两条数据便好,用来测试功能,如图: 

第二步,打通数据库(这个例子希望大家自己动手敲敲,耽误不了多少时间,熟悉一下jdbc如何和数据库打交道,故以图示之),如图:

第三步,改造DBUtil类,方便在dao层获得数据库的连接,代码如下:

 package com.czgo.db;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil
{
 private static final String URL = "jdbc:mysql://127.0.0.1:3306/imooc";
 private static final String UNAME = "root";
 private static final String PWD = "root";

 private static Connection conn = null;

 static
 {
  try
  {
   // 1.加载驱动程序
   Class.forName("com.mysql.jdbc.Driver");
   // 2.获得数据库的连接
   conn = DriverManager.getConnection(URL, UNAME, PWD);
  }
  catch (ClassNotFoundException e)
  {
   e.printStackTrace();
  }
  catch (SQLException e)
  {
   e.printStackTrace();
  }
 }

 public static Connection getConnection()
 {
  return conn;
 }
}

第四步,创建实体类(如上图,大家观察包的分配,我们将采用MVC思想设计本实例,有关于mvc的设计思想,请大家自行学习,这里不多说)代码如下:

package com.czgo.model;

import java.io.Serializable;

/**
 * 实体类:女神类
 * 
 * @author AlanLee
 * 
 */
public class Goddess implements Serializable
{
 private static final long serialVersionUID = 1L;

 /**
  * 唯一主键
  */
 private Integer id;
 /**
  * 姓名
  */
 private String name;
 /**
  * 手机号码
  */
 private String mobie;
 /**
  * 电子邮件
  */
 private String email;
 /**
  * 家庭住址
  */
 private String address;

 public Integer getId()
 {
  return id;
 }

 public void setId(Integer id)
 {
  this.id = id;
 }

 public String getName()
 {
  return name;
 }

 public void setName(String name)
 {
  this.name = name;
 }

 public String getMobie()
 {
  return mobie;
 }

 public void setMobie(String mobie)
 {
  this.mobie = mobie;
 }

 public String getEmail()
 {
  return email;
 }

 public void setEmail(String email)
 {
  this.email = email;
 }

 public String getAddress()
 {
  return address;
 }

 public void setAddress(String address)
 {
  this.address = address;
 }
}

第五步,dao层的实现(这里由于是小例子没有写dao接口,实际工作中大型项目应该是要写dao接口的,便于程序的维护和扩展),代码如下:

package com.czgo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.czgo.db.DBUtil;
import com.czgo.model.Goddess;

/**
 * 数据层处理类
 * 
 * @author AlanLee
 * 
 */
public class GoddessDao
{
 /**
  * 查询全部女神
  * 
  * @return
  * @throws SQLException
  */
 public List<Goddess> query() throws SQLException
 {
  List<Goddess> goddessList = new ArrayList<Goddess>();

  // 获得数据库连接
  Connection conn = DBUtil.getConnection();

  StringBuilder sb = new StringBuilder();
  sb.append("select id,name,mobie,email,address from goddess");

  // 通过数据库的连接操作数据库,实现增删改查
  PreparedStatement ptmt = conn.prepareStatement(sb.toString());

  ResultSet rs = ptmt.executeQuery();

  Goddess goddess = null;

  while (rs.next())
  {
   goddess = new Goddess();
   goddess.setId(rs.getInt("id"));
   goddess.setName(rs.getString("name"));
   goddess.setMobie(rs.getString("mobie"));
   goddess.setEmail(rs.getString("email"));
   goddess.setAddress(rs.getString("address"));

   goddessList.add(goddess);
  }
  return goddessList;
 }

 /**
  * 查询单个女神
  * 
  * @return
  * @throws SQLException
  */
 public Goddess queryById(Integer id) throws SQLException
 {
  Goddess g = null;

  Connection conn = DBUtil.getConnection();

  String sql = "" + " select * from imooc_goddess " + " where id=? ";

  PreparedStatement ptmt = conn.prepareStatement(sql);

  ptmt.setInt(1, id);

  ResultSet rs = ptmt.executeQuery();

  while (rs.next())
  {
   g = new Goddess();
   g.setId(rs.getInt("id"));
   g.setName(rs.getString("name"));
   g.setMobie(rs.getString("mobie"));
   g.setEmail(rs.getString("email"));
   g.setAddress(rs.getString("address"));
  }

  return g;
 }

 /**
  * 添加女神
  * 
  * @throws SQLException
  */
 public void addGoddess(Goddess goddess) throws SQLException
 {
  // 获得数据库连接
  Connection conn = DBUtil.getConnection();

  String sql = "insert into goddess(name,mobie,email,address) values(?,?,?,?)";

  PreparedStatement ptmt = conn.prepareStatement(sql);

  ptmt.setString(1, goddess.getName());
  ptmt.setString(2, goddess.getMobie());
  ptmt.setString(3, goddess.getEmail());
  ptmt.setString(4, goddess.getAddress());

  ptmt.execute();
 }

 /**
  * 修改女神资料
  * 
  * @throws SQLException
  */
 public void updateGoddess(Goddess goddess) throws SQLException
 {
  Connection conn = DBUtil.getConnection();

  String sql = "update goddess set name=?,mobie=?,email=?,address=? where id=?";

  PreparedStatement ptmt = conn.prepareStatement(sql);

  ptmt.setString(1, goddess.getName());
  ptmt.setString(2, goddess.getMobie());
  ptmt.setString(3, goddess.getEmail());
  ptmt.setString(4, goddess.getAddress());

  ptmt.execute();
 }

 /**
  * 删除女神
  * 
  * @throws SQLException
  */
 public void deleteGoddess(Integer id) throws SQLException
 {
  Connection conn = DBUtil.getConnection();

  String sql = "delete from goddess where id=?";

  PreparedStatement ptmt = conn.prepareStatement(sql);

  ptmt.setInt(1, id);

  ptmt.execute();
 }
}

第六步,控制层的实现(控制层在此处用来模仿控制层和界面,直接在这里构建数据,如果是界面的数据则通过请求传递接收参数即可,控制层的代码大家可以根据实际情况去更改完善,这里只是给大家抛砖引玉,做个简单的测试,时间比较紧,希望大家理解),代码如下:

package com.czgo.action;

import java.sql.SQLException;
import java.util.List;

import com.czgo.dao.GoddessDao;
import com.czgo.model.Goddess;

/**
 * 控制层,直接在这里构建数据,界面的数据则通过请求传递接收即可,亦是同理
 * 
 * @author AlanLee
 * 
 */
public class GoddessAction
{
 /**
  * 新增女神
  * 
  * @param goddess
  * @throws Exception
  */
 public void add(Goddess goddess) throws Exception
 {
  GoddessDao dao = new GoddessDao();
  goddess.setName("苍井空");
  goddess.setMobie("52220000");
  goddess.setEmail("52220000@qq.com");
  goddess.setAddress("北京红灯区");
  dao.addGoddess(goddess);
 }

 /**
  * 查询单个女神
  * 
  * @param id
  * @return
  * @throws SQLException
  */
 public Goddess get(Integer id) throws SQLException
 {
  GoddessDao dao = new GoddessDao();
  return dao.queryById(id);
 }

 /**
  * 修改女神
  * 
  * @param goddess
  * @throws Exception
  */
 public void edit(Goddess goddess) throws Exception
 {
  GoddessDao dao = new GoddessDao();
  dao.updateGoddess(goddess);
 }

 /**
  * 删除女神
  * 
  * @param id
  * @throws SQLException
  */
 public void del(Integer id) throws SQLException
 {
  GoddessDao dao = new GoddessDao();
  dao.deleteGoddess(id);
 }

 /**
  * 查询全部女神
  * 
  * @return
  * @throws Exception
  */
 public List<Goddess> query() throws Exception
 {
  GoddessDao dao = new GoddessDao();
  return dao.query();
 }

 /**
  * 测试是否成功
  * 
  * @param args
  * @throws SQLException
  */
 public static void main(String[] args) throws SQLException
 {
  GoddessDao goddessDao = new GoddessDao();

  List<Goddess> goddessList = goddessDao.query();

  for (Goddess goddess : goddessList)
  {
   System.out.println(goddess.getName() + "," + goddess.getMobie() + "," + goddess.getEmail());
  }
 }
}

最后,让我们看一下main方法的运行结果是否成功:

这样,一个简单的java jdbc 连接mysql数据库 实现增删改查便完成了,大家可以在查询的基础上试着去做一个高级查询,也就是多条件查询来巩固jdbc的使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • dubbo整合springboot新手入门教程详解

    dubbo整合springboot新手入门教程详解

    这篇文章主要介绍了dubbo整合springboot新手入门详解,当一台计算机的程序需要调用另一台计算机代码的时候,就涉及远程调用。此时dubbo就粉末登场了,需要的朋友可以参考下
    2019-07-07
  • Java图片裁剪和生成缩略图的实例方法

    Java图片裁剪和生成缩略图的实例方法

    这篇文章主要介绍了Java图片裁剪和生成缩略图的实例方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • Java排序算法之归并排序简单实现

    Java排序算法之归并排序简单实现

    这篇文章主要介绍了Java排序算法之归并排序简单实现,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 一看就懂 详解JAVA泛型通配符T,E,K,V区别

    一看就懂 详解JAVA泛型通配符T,E,K,V区别

    泛型从字面上理解,是指一个类、接口或方法支持多种类型,使之广泛化、一般化和更加通用。通配符只有在修饰一个变量时会用到,使用它可方便地引用包含了多种类型的泛型;下面我们来深入了解一下吧
    2019-06-06
  • 详解SpringBoot结合swagger2快速生成简单的接口文档

    详解SpringBoot结合swagger2快速生成简单的接口文档

    这篇文章主要介绍了详解SpringBoot结合swagger2快速生成简单的接口文档,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Java Date类常用示例_动力节点Java学院整理

    Java Date类常用示例_动力节点Java学院整理

    在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用,需要的朋友可以参考下
    2017-05-05
  • Java模拟多线程实现抢票代码实例

    Java模拟多线程实现抢票代码实例

    这篇文章主要介绍了Java模拟多线程实现抢票,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • java获取网络图片上传到OSS的方法

    java获取网络图片上传到OSS的方法

    这篇文章主要为大家详细介绍了java获取网络图片上传到OSS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • SpringBoot激活profiles的几种方式

    SpringBoot激活profiles的几种方式

    多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,这篇文章主要介绍了SpringBoot激活profiles的几种方式,需要的朋友可以参考下
    2019-10-10
  • Spring Cloud CLI简单介绍

    Spring Cloud CLI简单介绍

    本文我们将介绍Spring Boot Cloud CLI(或简称Cloud CLI)。该工具为Spring Boot CLI提供了一组命令行增强功能,有助于进一步抽象和简化Spring Cloud部署。感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论