zoukankan      html  css  js  c++  java
  • Java DAO

    注:在项目里面需要引入BeanUtil,Logging jar 包

    create table student
    (
        flow_id int,
        type int,
        id_card varchar(50),
        student_name varchar(50),
        location varchar(80),
        grade int
    )

    insert into student values(1000,1,'429004','小明','深圳',1);
    insert into student values(1001,1,'429005','xiaoming','深圳',1);
    insert into student values(1002,1,'429006','小强','深圳',1);
    insert into student values(1003,1,'429007','xiaoqiang','深圳',1);
    insert into student values(1004,1,'429008','curtis','深圳',1);

    package com.curtis.student4;

    import java.lang.reflect.InvocationTargetException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import org.apache.commons.beanutils.BeanUtils;
    import org.junit.Test;

    import com.curtis.jdbc.JDBCTools;

    public class GetListStudent {

        @Test
        public void getStudent() {
            String sql = "select * from student where flow_id=?";
            Student student = getMessage(Student.class, sql, 1000);
            System.out.println(student);
        }

        @Test
        public void getStudents() {
            String sql = "select * from student";
            List<Student> students = getMessages(Student.class, sql);
            System.out.println(students);
        }

        @Test
        public void getValue() {
            String sql = "select flow_id from student where flow_id=?";
            int flow_id = getOnlyValue(sql, 1000);
            System.out.println(flow_id);
        }

        // 查询一行记录
        public <T> T getMessage(Class<T> clazz, String sql, Object... args) {
            List<T> result = getMessages(clazz, sql, args);
            if (result.size() > 0) {
                return result.get(0);
            }
            return null;
        }

        // 查询多行记录
        public <T> List<T> getMessages(Class<T> clazz, String sql, Object... args) {
            List<T> list = new ArrayList<>();
            Connection connection = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            try {
                connection = JDBCTools.getConnection();
                preparedStatement = connection.prepareStatement(sql);
                for (int i = 0; i < args.length; i++) {
                    preparedStatement.setObject(i + 1, args[i]);
                }
                resultSet = preparedStatement.executeQuery();
                List<Map<String, Object>> values = handleResultSetToMapList(resultSet);// 调用下面的方法
                list = transfterMapListToBeanList(clazz, values);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JDBCTools.releaseDB(resultSet, preparedStatement, connection);
            }
            return list;
        }

        public List<Map<String, Object>> handleResultSetToMapList(
                ResultSet resultSet) throws SQLException {
            List<Map<String, Object>> values = new ArrayList<>();
            List<String> columnLabels = getColumnLabels(resultSet);
            Map<String, Object> map = null;
            while (resultSet.next()) {
                map = new HashMap<>();
                for (String columnLabel : columnLabels) {
                    Object value = resultSet.getObject(columnLabel);
                    map.put(columnLabel, value);
                }
                values.add(map);
            }
            return values;
        }

        private List<String> getColumnLabels(ResultSet rs) throws SQLException {
            List<String> labels = new ArrayList<>();
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 0; i < rsmd.getColumnCount(); i++) {
                labels.add(rsmd.getColumnLabel(i + 1));
            }
            return labels;
        }

        public <T> List<T> transfterMapListToBeanList(Class<T> clazz,
                List<Map<String, Object>> values) throws InstantiationException,
                IllegalAccessException, InvocationTargetException {
            List<T> result = new ArrayList<>();
            T bean = null;
            if (values.size() > 0) {
                for (Map<String, Object> m : values) {
                    bean = clazz.newInstance();
                    for (Map.Entry<String, Object> entry : m.entrySet()) {
                        String propertyName = entry.getKey();
                        Object value = entry.getValue();
                        BeanUtils.setProperty(bean, propertyName, value);
                    }
                    result.add(bean);
                }
            }
            return result;
        }

        // 查询单个值
        public <T> T getOnlyValue(String sql, Object... args) {
            Connection connection = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            try {
                connection = JDBCTools.getConnection();
                preparedStatement = connection.prepareStatement(sql);
                for (int i = 0; i < args.length; i++) {
                    preparedStatement.setObject(i + 1, args[i]);
                }
                resultSet = preparedStatement.executeQuery();
                if (resultSet.next()) {
                    return (T) resultSet.getObject(1);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JDBCTools.releaseDB(resultSet, preparedStatement, connection);
            }
            return null;
        }

    }

  • 相关阅读:
    Java作业一 (2017-9-10)
    遇到的坑1:传奇SF找不到背包数组
    黑白逆向编程课程笔记 18.局部&全局变量&参数详解
    黑白逆向编程课程笔记 16.浮点指令
    黑白逆向编程课程笔记 13.堆栈
    黑白逆向编程课程笔记 11.寄存器&补充
    SVN的trunk branches tags(一)
    JBoss Resteasy是一个遵守JAX-RS 标准的REST的开源项目
    JBOSS是sun公司的应用程序服务器,就象weblogic,jboss包含tomcat的所有功能.
    软件架构(体系结构,Architecture)和软件框架
  • 原文地址:https://www.cnblogs.com/meroselove/p/5324329.html
Copyright © 2011-2022 走看看