连接MySql数据库,并根据sql语句 返回 查询到的所有结果

使用指南

(已封装了连接数据库的代码,只需要传入sql语句和连接数据库账号和密码)
当你用原生的Java代码,需要连接数据库并查询某个表中的数据时,创建下面这个类并复制代码到你创建的类中,在这个类中填写数据库名,数据库账号名,密码,填写完成之后即可使用。

注意连接数据库要使用JDBC

直接下载JDBC文件,复制粘贴到以下地方即可,下载链接在这:链接: https://pan.baidu.com/s/11-7Euy0wkpteUD1tNrnAJQ
在这里插入图片描述

public class ConnectIonDatabase {
    Connection connection = null;
    Statement statement = null ;
    ResultSet resultSet =null;

    public  List SelectEntityListFromDB(String SQL,Class needClass){
        List EntityMapList = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/填写需要访问的数据库名字", "填写数据库账号名", "填写数据库密码");
            statement = connection.createStatement();
            resultSet = statement.executeQuery(SQL);
            if (resultSet == null ){
                return EntityMapList;
            }
            ResultSetMetaData metaData = resultSet.getMetaData();
            int columnCount = metaData.getColumnCount();
            EntityMapList = new ArrayList<>();
            while(resultSet.next()){
                Object o = needClass.newInstance();
                Map stringEntityMap = new HashMap();
                for (int i = 1; i <= columnCount; i++) {
                    stringEntityMap.put(metaData.getColumnName(i), resultSet.getObject(i));
                }
                map2Bean(stringEntityMap,o);
                EntityMapList.add(o);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return EntityMapList;
    }

    /* 将map集合转换成对应的实体类 */
    public static Object map2Bean(Map<String, Object> map, Object object) {
        if (map == null || object == null) {
            return null;
        }
        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

            for (PropertyDescriptor property : propertyDescriptors) {
                String key = property.getName();
                if (map.containsKey(key)) {
                    Object value = map.get(key);
                    // 得到property对应的setter方法
                    Method setter = property.getWriteMethod();
                    setter.invoke(object, value);
                }
            }
        } catch (IntrospectionException | InvocationTargetException | IllegalAccessException e) {
            e.printStackTrace();
        }
        return object;
    }

}

使用案例:

数据库中我有一个名字为test的数据库。
在test数据库中我有student表。
那么使用方式如下:

//    测试自己封装的代码
    @Test
    public void testSelectEntityListFromDB(){
//        可以写普通的查询语句select * from student,我这里写的是分页查询,只要是要求有返回值的。
        String sql = "select * from student order by age limit 0,2";
        ConnectIonDatabase connect = new ConnectIonDatabase();
        List list = connect.SelectEntityListFromDB(sql, Student.class);
        System.out.println(list);
    }

结果:

[Student{name='ad1', sex='男', age=1}, Student{name='hahah1', sex='女', age=2}]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值