Java使用JDBC操作MySQL的基本实现

JDBC的标准实现:

首先JDBC是java访问数据库的解决方案,定义了一套标准的的接口,不同数据库去实现这些接口,从而用相同的方式访问数据库。

用到的相关类:驱动管理类(DriverManager)、连接接口(Connection)、语句对象接口(Statement)、结果集接口(ResultSet)

JDBC工作原理:

1.加载驱动:class.forname("com.mysql.cj.jdbc.Driver")

2.获取连接:Connection conn = DriverManager.getConnection("jdbc:mysql://IP地址:3306/库名?serverTimezone=GMT", "用户名", "登录密码");

3.执行SQL语句: presta = conn.prepareStatement(sql);

                   tips:这里建议用PreparedStatement 类来执行SQL语句,可以防止非法注入。

4.返回ResultSet结果:int ret = presta.executeUpdate(sql);//增删改返回一个int,不用做结果解析

                           或者  ResultSet rs= presta.executeQuery(sql);//查询要做结果解析

5.释放资源:close();

Java与SQL连接的环境搭载:

下载和自己数据库相对应的jar包,在java中创建一个项目,在项目中新建一个名为lib的Folder文件,把jar包导入,然后右键build path,会出现像小奶瓶图标的一个东西,证明环境搭好了。

下面以学生管理系统为实例具体分析:

创建实体类bean:

1、根据数据库的表字段,创建一个实体类,其中字段和实体类的属性一一对应,添加get、set、toString方法以及有参和无参构造。

创建一个Dao层的包:

这个包里面要放四个东西。

1、有一个Daoutil类,来封装加载驱动(静态代码块,因为驱动只加载一次)、获取连接、释放资源这三个静态方法,为什么是静态的,因为方便后面的实现可以直接用类名调用;

2、有一个BaseDao这个类封装了一些方法的预处理,比如说增删改查,因为使用的是PreparedStatement,所以要做一些预处理,这里写一个修改和查询的伪代码,便于理解

public int  update(String sql,Object...can) {
        int ret = 0;
        //获取连接
        conn = Daoutil.getconn();    
        //预处理
        presta = conn.prepareStatement(sql);
        //判断可变参数数组非空    
        if(can !=null) {    
            for(int i = 0; i<can.length;i++) {
                //传参
                presta.setObject(i+1, can[i]);
            }
        }
        //关闭资源
        Daoutil.closeSource(conn, presta, rs);
        return ret;
}
public ResultSet query(String sql,Object...obj) {
		ResultSet rs =null;
        //获取连接
	    conn = Daoutil.getconn();
		//预处理
		presta = conn.prepareStatement(sql);
		//传参
		if(can!=null) {
			for(int i = 0;i<obj.length;i++) {
				presta.setObject(i+1, obj[i]);
                //这里SetObject的参数i+1表示第几个字段的参数,下标从1开始
                //参数是读取数组中存的参数,下标从0开始
			}
		}
		rs= presta.executeQuery(sql);
	} 
	    return rs;
}

封装的方法(功能)写完之后

定义一个接口:

包含了实现的功能,为什么单独定义接口,是因为紧接着还要定义一个实现类去实现这个接口,这样做是为了在实际的工作中写代码时,几个人分工协作,而且这也正是Dao层和Service层的分工意义之所在,服务层的程序员不会因为某个功能没实现好或者说有什么bug,再去进行维护,就是真正的做到个搞个的事。而接口帮我们解决了这个问题,服务层的程序员只需要用接口new对象,不用具体的实现,只要拿到返回结果,干自己服务层该干的事。

定义一个实现类:

这个实现类首先要继承BaseDao用它封装好的方法做功能的预处理,然后再实现上面的接口。

拿到预处理结果后,根据每个不同的功能具体实现,比如查找,需要先new一个实体类对象,将每个字段拿到的字段值用对象的相应属性接收,这一步叫映射。

定义一个测试类:

用接口new一个实现类,用这个对象去去调用这个实现类中的方法,就可以了。

JDBC在执行过程中有很多弊端,比如像硬编码、SQL语句不灵活等问题,所以如果想了解java和数据库的底层是怎么交互的,jdbc绝对是非常好的途径,但是在实际中经常用的是Mybitas这个工具,他帮我们解决了JDBC的问题,将所有的文件写在.xml文件中,解决了硬编码等问题、

本篇完

猜你喜欢

转载自blog.csdn.net/m0_48011056/article/details/126072814