java实现数据库的增删查改

本文章为记录自己自学java与数据库连接
学习的非常粗糙且只实现了增删查改,借此留下印象。
这与老师所教授的有很多出入而且采用的是关于是固定的模板(事先写好的java包)
后面有主要代码的分享(百度网盘)

需要基本技术

1.需要掌握java基本的代码操作
2.掌握简单的SQL语句
3.java中GUI的编写
如果不打算写GUI,直接在控制台上运行的话,我会近期再写一篇

需要软件

1.java编译工具 :Intellij IDEA 2020.1 x64 (此软件需要破解)
2.数据库工具 :mysql 5.7 (sql也可,但与mysql有些许不同)
3.数据库管理工具 :navicat for sql (此软件需要破解)
4.JDK版本 : JDK1.8

注意:
ecplise2021最新版只能使用jdk11以上版本
mysql最新版为8.0 只有在mysql官网上查找历史版本才可下载5.7
navicat 和 idea都有免费的试用时间
mysql版本跟后续的jdbc.jar包版本挂钩
jdk16为最新版 不建议使用

软件下载

idea下载

idea下载官网
此官网可能需要翻墙

mysql下载

mysql官网
mysql下载与检测
点击downloads
在这里插入图片描述
点击mysql community downloads
在这里插入图片描述
点击mysql installer for windows
在这里插入图片描述
mysql 8.0选择下面一个版本下载既可
在这里插入图片描述
5.7点这里
在这里插入图片描述
下载下面一个版本既可
在这里插入图片描述

mysql刚开始下载和运行困难重重
有问题就去询问其他大佬
老师也可能有完整的mysql安装包

navicat下载

navicat下载
百度或csdn上自行搜索破解版
使用mysql自带的管理平台也行不一定非要navicat

jdk

jdk1.8相信大家都有 环境变量也能相应配置

感谢以上博客在我一头雾水的时候帮助了我

navicat上检测mysql是否能正常使用

软件关联

1.navicat需与mysql正常连接
比如在navicat里新建的数据 能在mysql里看见
往各位自行摸索mysql是否能正常运行

2.新建navicat连接
在这里插入图片描述
连接名可以任意
用户名和密码一定要设定好
再然后在新建的连接里面新建数据库、填入数据等操作

3.idea选择jdk版本
在这里插入图片描述
点击project structure
在这里插入图片描述
如果没有 则手动添加jdk安装目录

从零开始程序代码

软件的安装完成之后就可以写项目了

新建项目

在这里插入图片描述
我写的是GUI 什么都不用点 直接next
在这里插入图片描述
这里也不用 next
在这里插入图片描述
命名和选择路径
在这里插入图片描述
新建完成
在这里插入图片描述

编写代码

druid.properties

在src层右键 生成resource bundle
在这里插入图片描述

在这里插入图片描述
输入以下代码:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///stu
username=root
password=123456
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

其中driverClassName如果是mysql则不用更改 sqlserver则需要更改
username = navicat中新建连接的用户名
password = navicat中新建连接的密码
其他不用更改

csdn上下载文件要付费,只能弄在网盘上分享了,但网盘上是完整代码不知道能不能直接使用,建议还是新建一个全新的项目,复制文件进去进行实现
链接:https://pan.baidu.com/s/1ofAj-HAM0aNXbaHiAcOtQQ
提取码:44ok

util文件夹

package util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * JDBC工具类 使用Durid连接池
 */
public class JDBCUtils {

    private static DataSource ds ;

    static {

        try {
            //1.加载配置文件
            Properties pro = new Properties();
            //使用ClassLoader加载配置文件,获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //2.初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(pro);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接池对象
     */
    public static DataSource getDataSource(){
        return ds;
    }


    /**
     * 获取连接Connection对象
     */
    public static Connection getConnection() throws SQLException {
        return  ds.getConnection();
    }
}

这是java与数据库连接的代码,不需要做任何改动。

lib文件夹

lib文件夹中存放的是jar包
比如说 jdk jdbc 等等一类的写好的java文件
直接导入就可以使用
在这里插入图片描述
在这里插入图片描述

jar包前面有三角形意味着成功导入,没有就没有成功导入
在这里插入图片描述
选中你要导入的jar包
右键
在这里插入图片描述
点击add as libary
点击ok
在这里插入图片描述
成功导入

dao文件夹

package dao;

import pojo.Stu;

import java.util.List;
import java.util.Map;

public interface StuDao {
    public List<Stu> findAll();
    //增加
    public void add(Stu stu);
    //查找
    public Stu findId(int id);
    //修改
    public void update(Stu stu);
    //删除
    public void delete(int id);
    //
    public int findTotalCount(Map<String, String[]> parameterMap);
    //
    public List<Stu> findByPage(int start, int rows, Map<String, String[]> parameterMap);
    //
}

dao层里是对增删查改函数的声明

pojo文件夹

package pojo;

public class Stu {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

    @Override
    public String toString() {
        return "Stu{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public Stu() {
    }

    public Stu(Integer id, String name, Integer age, String sex) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

}

其中
Stu函数:定义了Stu的数据集 该数据集还有四个元素。定义的Stu可以当成int,char一样的数据类型放在函数参量使用。
toString函数:定义了Stu数据集的输出格式。
getName等函数:在有数据集Stu的情况下可以单独获取其中一个元素的信息。
setName等函数:在需要更改数据集Stu的情况下可以对其中一个元素赋予新值。

impl文件夹

package dao.Impl;

import dao.StuDao;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import pojo.Stu;
import util.JDBCUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class StuDaoImpl implements StuDao {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    @Override
    public List<Stu> findAll() {
        //使用JDBC操作数据库
        //1.定义sql
        List<Stu> Stus;
        String sql = "select * from student";
        Stus = template.query(sql, new BeanPropertyRowMapper<Stu>(Stu.class));

        return Stus;
    }

    @Override
    public void add(Stu stu) {
        //1.定义sql语句
        String sql = "insert into student(`id`,`name`,`age`,`sex`) value(?,?,?,?)";
        //2.执行sql
        template.update(sql, stu.getId(), stu.getName(),stu.getAge(), stu.getSex());
    }

    @Override
    public Stu findId(int id) {
        //1.定义sql
        String sql = "select * from student where id = ?";
        //2.执行sql语句,将信息转为对象
        return template.queryForObject(sql, new BeanPropertyRowMapper<Stu>(Stu.class), id);
    }

    @Override
    public void update(Stu stu) {
        //1.定义sql
        String sql = "update student set id = ?, name= ?, age = ?, sex = ? where id = ?";
        //2.执行sql语句,将信息转为对象
        template.update(sql, stu.getId(), stu.getName(),stu.getAge(), stu.getSex(),stu.getId());
    }

    @Override
    public void delete(int id) {
        //1.定义sql
        String sql = "delete from student where id = ?";
        //2.执行sql语句
        template.update(sql, id);
    }

其中
List[Stu]是将多个Stu数据集汇聚成一个列表
String sql 定义了sql的语句 你要实现什么样的功能就在这里写什么样的sql语句
template有这个jar包才能使用的函数

test文件夹

test其实就是对把大块的代码分成多个函数进行测试

package test;

import dao.Impl.StuDaoImpl;
import pojo.Stu;

import java.sql.SQLOutput;
import java.util.List;

public class jdbctest {


    public static void main(String[] args) {
        StuDaoImpl sd=new StuDaoImpl();
        //添加测试
        //sd.add(new Stu(1,"龙傲天",18,"男"));
        //sd.add(new Stu(2,"兔子",20,"女"));

        //删除测试
        //sd.delete(1);

        //修改测试
        //sd.update(new Stu(2,"奥利给",20,"男"));

        //查询测试 全部
        //List<Stu> all = sd.findAll();
        //System.out.println(all);

        //查询第一个
        Stu ss = sd.findId(3);
        System.out.println(ss);
//        all.toString();
    }
}

在完成以上三个文件夹的代码后就可以进行测试了
这里测试的是对数据库的增删查改的函数
也能对是否能与数据库连接进行了测试
在这里插入图片描述
测试不会影响主函数的运行

如果jdbc测试爆红且是连接报错,多加耐心,只要能解决这个问题剩下都好写
连接问题的报错太多
当时的我也是在csdn上一一对照解决问题的。

view文件夹

view里写的全是界面的UI
在这里插入图片描述
main函数直接到window界面
window界面添加界面按钮和动作监听
add 添加界面
findALL查询所有信息的界面
update修改界面
删除界面和按学号查询界面直接写在了window里面

按个人习惯自行编写

src

在这里插入图片描述
image是图片存放的文件夹
在UI的设计中可能用到
插入图片
以上就实现了jdbc的增删查改及UI设计

结语

对资源的总结:
idea下载:自行百度或私信
mysql下载:mysql下载与检测
jdk和navicat自选下载
完整代码:链接:https://pan.baidu.com/s/1ofAj-HAM0aNXbaHiAcOtQQ
提取码:44ok
这个大作业耗时太久,但是又过于仓促,虽然最后完成了,但是很多东西都讲不清,以上的内容我也没有再次落实。
如果遇到问题,请积极留言。
如果在我的内容中发现了错误,我会立刻改正。
望各位武运昌隆。

  • 9
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值