首页 > 其他分享 >jdbc使用(配置版)

jdbc使用(配置版)

时间:2023-04-19 15:37:15浏览次数:36  
标签:Execute jdbc String int 配置 使用 id sql public

一、创建properties.properties文件连接好数据库

点击查看代码
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo01
username=root
password=root
zero=0
二、创建DbHelper.java类连接properties.properties文件
点击查看代码
public class DbHelper {
    public static String DRIVER;
    public static String URL;
    public static String USERNAME;
    public static String PASSWORD;
    public static int ZERO;

    static{
        InputStream inputStream = DbHelper.class.getResourceAsStream("properties.properties");
        Properties properties = new Properties();
        try {
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        DRIVER = properties.getProperty("driver");
        URL = properties.getProperty("url");
        USERNAME = properties.getProperty("username");
        PASSWORD = properties.getProperty("password");
        ZERO = Integer.parseInt(properties.getProperty("zero"));
    }

}
三、创建DbManager类,找驱动、建连接
点击查看代码
public class DbManager {
    static Connection getConnection(){
        try {
            Class.forName(DbHelper.DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Connection con = null;
        try {
            con = DriverManager.getConnection(DbHelper.URL,DbHelper.USERNAME,DbHelper.PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
}
四、创建一个接口IMapper.java
点击查看代码
public interface IMapper {
    List mapper(ResultSet rs);
}
五、创建实体类Student与数据库对接
点击查看代码
public class Student {
    private int id;
    private String name;

    public Student() {
    }

    public Student(int id,String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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


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

六、创建类StudentMapper实现接口IMapper
点击查看代码
public class StudentMapper implements IMapper{
    @Override
    public List mapper(ResultSet rs) {
        List<Student> list = new ArrayList<>();
        Student stu = null;
        try {
            while(rs.next()){
                stu = new Student();
                stu.setId(rs.getInt("id"));
                stu.setName(rs.getString("name"));
                list.add(stu);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
}
七、创建一个Execute类创建通道、执行sql语句并返回结果(包含更新方法和查询方法)
点击查看代码
public class Execute {

    public int executeUpdate(String sql, List<Object> objectList){
        PreparedStatement ps = null;
        int num = DbHelper.ZERO;
        Connection con = DbManager.getConnection();
        try {
            ps = con.prepareStatement(sql);
            if(objectList != null){
                for (int i = 0; i< objectList.size(); i++) {
                    ps.setObject(i+1, objectList.get(i));
                }
            }
            num = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            try {
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return num;
    }

    public List executeQuery(String sql, IMapper imapper, List<Object> objectList){
        PreparedStatement ps = null;
        ResultSet rs = null;
        List list = null;
        try {
            ps = DbManager.getConnection().prepareStatement(sql);
            if(objectList != null){
                for (int i = 0; i< objectList.size(); i++) {
                    ps.setObject(i+1, objectList.get(i));
                }
            }
            rs = ps.executeQuery();
            list = imapper.mapper(rs);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            try {
                rs.close();
                ps.close();
                DbManager.getConnection().close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return list;
    }
}

八、创建StudentDao写sql语句,调用Execute类方法传参数返回结果
点击查看代码
public class StudentDao {
    int insert(){
        String sql = "insert into student values(3, 'wang')";
        Execute exec = new Execute();
        int num = exec.executeUpdate(sql, null);
        return num;
    }

    int update(){
        String sql = "update student set name = 'li' where id = 3";
        Execute exec = new Execute();
        int num = exec.executeUpdate(sql, null);
        return num;
    }

    int delete(){
        String sql = "delete from student where id = 3";
        Execute exec = new Execute();
        int num = exec.executeUpdate(sql, null);
        return num;
    }

    List<Student> select(){
        String sql = "select * from student";
        Execute exec = new Execute();
        StudentMapper studentMapper = new StudentMapper();
        List<Student> list = exec.executeQuery(sql, studentMapper, null);
        return list;
    }

    List<Student> selectById(int id){
        // ?表示占位符
        String sql = "select * from student where id = ?";
        Execute exec = new Execute();
        StudentMapper studentMapper = new StudentMapper();
        List<Object> listObject = new ArrayList<Object>();
        listObject.add(id);
        List<Student> list = exec.executeQuery(sql, studentMapper, listObject);
        return list;
    }
}
九、测试
点击查看代码
public class Test {
    public static void main(String[] args) throws SQLException {

        Execute exec = new Execute();

//        String sql = "insert into student values(2, 'zhang')";
//        int num = exec.executeUpdate(sql);
        StudentDao studentDao = new StudentDao();
        List<Student> list = studentDao.selectById(1);

        for (Student stu : list){
            System.out.println(stu);
        }
    }
}

标签:Execute,jdbc,String,int,配置,使用,id,sql,public
From: https://www.cnblogs.com/liangkuan/p/17333453.html

相关文章

  • jdbc过程
    点击查看代码publicclassTestQuery{publicstaticvoidmain(String[]args){//1.找驱动try{Class.forName("com.mysql.cj.jdbc.Driver");}catch(ClassNotFoundExceptione){e.printStackTrace();......
  • 计算带宽的使用情况
    由于大多数组织依靠其IT基础架构进行日常业务关键型运营,因此网络带宽可以对其网络性能产生巨大影响。连接不良可能会使组织花费大量资金并影响生产力。这就是为什么监控和计算带宽使用情况对于确保组织的最佳网络带宽性能至关重要的原因。在计算企业的带宽使用情况时,需要考虑许多......
  • sequelize 中 Op的使用方法
    需求,使用where做条件查询时,方便限制,使用Op一:页面引入const{Op}=require('sequelize')二:方法[Op.and]:{a:5}//且(a=5)[Op.or]:[{a:5},{a:6}]//(a=5或a=6)[Op.gt]:6,//id>6[Op.gte]:6,//id>=6[Op.lt]:10,......
  • MongoDB 4.2:配置文件选项全解析《二》
    1.net.unixDomainSocket选项net:unixDomainSocket:enabled:<boolean>pathPrefix:<string>filePermissions:<int>net.unixDomainSocket.enabledType:boolean默认值:True启用或禁用UNIX域套接字上的侦听。net.unixDomainSocket.enabled仅适用于基于Uni......
  • 如何使用动态拨号代理提高网络爬虫成功率
    随着互联网的不断发展和数据的爆炸增长,越来越多的企业和个人开始使用网络爬虫来获取所需的数据。然而,在爬虫过程中,很容易被目标站点识别并拦截,导致数据抓取失败。为了解决这一问题,许多开发者开始使用动态拨号代理技术来提高网络爬虫的成功率。动态拨号代理是一种常用的技术......
  • 鹏业安装云算量免费使用,只需这几步
    目前鹏业安装算量软件推出安装云算量软件普惠活动,正版免费无锁,那么如何免费使用鹏业安装算量软件呢?鹏业安装算量免费使用,只需以下这几步。1、进入鹏业官网➡右上角下载中心➡鹏业BIM安装三维算量(下载并安装软件)2、打开软件➡弹出云授权窗口(提示未检测到加密锁,需扫码授权,即可进入在......
  • MS - 场景使用 csv 参数化
    创建场景-场景变量-添加左侧下拉框选择CSV-点击添加输入变量名,多个以分隔符分开。添加文件,文件第一行为变量名,后续行为数据,点击确定。在后续的接口中使用${var_name}使用变量。......
  • 从申请到调用:全国快递物流查询 API 使用教程
    引言面对越来越多的快递需求和快递公司的日益增多,手动查询快递状态的工作变得愈发繁琐。此时,一个全国快递物流查询API的出现能够极大地提高查询的效率和准确性,解决人工查询的问题,为用户提供更加便捷的服务体验。全国快递物流查询API可以通过接口自动查询快递状态并返回相应信......
  • 使用Vue.js实现文字跑马灯效果
    实现文字跑马灯效果,首先用到substring()截取和setInterval计时器clearInterval()清除计时器效果如下:实现代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content=&......
  • NULL值引入导致新增的unknown逻辑值 以及 SQL server中ANSI_NULLS的使用
    部分参考文章:https://www.bbsmax.com/A/A7zgEOVl54/ [BBSMAX]Lumia1020 2022-11-08https://www.cnblogs.com/SFAN/p/4343703.htmlcnblogs@ sunnyboy 2015-03-1710:17wikipedia三值逻辑:https://zh.wikipedia.org/wiki/%E4%B8%89%E5%80%BC%E9%80%BB......