• java与数据库交互常用到的一些方法


    下面我整理了一下java中常用的几个与数据库交互的常用方法,仅供参考:

    1.执行SQL(dao层的实现类中)

    (1)SQL查询:

    //import org.hibernate.Query;
    //import org.hibernate.Session;

    /**
    * 通过名称查找id * @param psname * @return id */ @Override public String findEnterpriseId(String psname) { String id = ""; //查找信息的sql String sql = "select id from t_enterprise where psname = '"+psname+"'"; //创建Query对象接收通过createSqlQuery()方法解析sql语句得到的结果 //方式一: Query query = this.createSqlQuery(sql); //方式二: //Session session = getSession(); //Query query = session.createSQLQuery(sql);
      //存储过程键值对应
      //sqlQuery.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
    List<String[]> list = query.list(); for (int i = 0; i < list.size(); i++) { Object obj = list.get(0); if (obj!=null) { id = obj.toString(); } } return id; }

     (2)SQL修改或删除

        @Override
        public void updateWeather(ActuallyWeather actuallyWeather) throws Exception {
            String sql = "update t_actually_weather set forecast_time = '"+actuallyWeather.getForecastTime()+"',"
                    + "max_temperature = '"+actuallyWeather.getMaxTemperature()+"',"
                    + "min_temperature = '"+actuallyWeather.getMinTemperature()+"',"
                    + "place_name = '"+actuallyWeather.getPlaceName()+"',"
                    + "pub_time = '"+actuallyWeather.getPubTime()+"',"
                    + "weather_status = '"+actuallyWeather.getWeatherStatus()+"',"
                    + "wind_power = '"+actuallyWeather.getWindPower()+"'"
                    + " where id = '"+actuallyWeather.getId()+"'";
            this.getSession().clear();
            this.createSqlQuery(sql).executeUpdate();
        }

    2.执行HQL(dao层的实现类中)

    (1)返回Page

    1//action中page属性
    private Page<UnifiedEnterInfo> page = new Page<UnifiedEnterInfo>(Constants.DEFAULT_PAGE_SIZE, true);
    2)
    page参数在(action)中只需要设置如下:
        page.setPageNo(this.getPageNo());
        page.setPageSize(this.getPageSize());
    3/**
         * 查询
         * @param page
         * @param filterMap
         */
        @SuppressWarnings("rawtypes")
        @Override
        public Page<UnifiedEnterInfo> findAllEnterprise(Page<UnifiedEnterInfo> page,Map filterMap){
            String hql = " from UnifiedEnterInfo s where 1=1 ";
            //污染源名称    
            String psname = (String) filterMap.get("psname");
            if (StringUtils.isNotEmpty(psname)) {
                String[] str = psname.split(" ");
                String reg = "";
                for (int i = 0; i < str.length; i++) {
                    reg = str[i];
                    if (!"".equals(reg)) {
                        hql = hql+" and psname like '%"+reg+"%'";
                    }
                }
                //hql = hql+" and psname like '%"+psname.trim()+"%'";
            }
            
            //系统来源
            String systemSource = (String) filterMap.get("systemSource");
            if (StringUtils.isNotEmpty(systemSource)) {
                hql = hql+" and systemSource = "+systemSource;
            }
    
            //所属区域
            String regionCode = (String) filterMap.get("regionCode");
            if (StringUtils.isNotEmpty(regionCode)) {
                if(!"110100".equals(regionCode))
                    hql = hql+" and regionCode like '"+regionCode+"%'";
            }
    
            //法人编码
            String corporationCode = (String) filterMap.get("corporationCode");
            if (StringUtils.isNotEmpty(corporationCode)) {
                hql = hql+" and corporationCode like '%"+corporationCode.trim()+"%'";
            }
            
            //法人名称
            String corporationName = (String) filterMap.get("corporationName");
            if (StringUtils.isNotEmpty(corporationName)) {
                hql = hql+" and corporationName like '%"+corporationName.trim()+"%'";
            }
            
            //地址
            String addr = (String) filterMap.get("addr");
            if (StringUtils.isNotEmpty(addr)) {
                hql = hql+" and addr like '%"+addr.trim()+"%'";
            }
            
            //是否统一
            String ifUinfied =(String)filterMap.get("ifUinfied");
            if("1".equals(ifUinfied)) {
                hql = hql+" and mainOrChild=0";
            }else if("2".equals(ifUinfied)){
                hql = hql+" and mainOrChild!=0";
            }
            
            hql = hql+" order by ltrim(rtrim(psname)) asc";
            
            return this.find(page,hql);
        }

    (2)返回唯一值:

        /**
         * 查询获取最大的统一污染源编码
         */
        @Override
        public String findMaxUniqueCode(){
            String hql = "select max(uniqueCode) from UnifiedEnterInfo ";
            return (String)this.findUnique(hql);
        }

    (3)返回List:

        @Override
        public List<UnifiedEnterInfo> getUnifiedEnterInfosList(Map filterMap) {
            String hql = " from UnifiedEnterInfo s where 1=1 ";
            String psname = (String) filterMap.get("psname");
            if (StringUtils.isNotEmpty(psname)) {
                hql = hql+" and psname like '%"+psname.trim()+"%'";
            }
    
            String corporationCode = (String) filterMap.get("corporationCode");
            if (StringUtils.isNotEmpty(corporationCode)) {
                hql = hql+" and corporationCode like '%"+corporationCode.trim()+"%'";
            }
            
            String corporationName = (String) filterMap.get("corporationName");
            if (StringUtils.isNotEmpty(corporationName)) {
                hql = hql+" and corporationName like '%"+corporationName.trim()+"%'";
            }
            
            String addr = (String) filterMap.get("addr");
            if (StringUtils.isNotEmpty(addr)) {
                hql = hql+" and addr like '%"+addr.trim()+"%'";
            }
            
            hql = hql+" order by psname asc";
            
            return this.find(hql);
        }

    3.执行存储过程(dao层的实现类中)

    注意:如果查询执行的时候数据库返回”该语句没有返回结果集。“这样的错误,存储过程中少了一句代码:SET NOCOUNT ON
     
    (1)查询:
        public List findPsList(String psCode) {
            Long psCode1;
            //创建session对象
            Session session = this.getSession();
            //创建事务的对象
            Transaction trans = session.beginTransaction();
            //调用存储过程
            SQLQuery sqlQuery = session.createSQLQuery("{Call Proc_ZL_PSFlowRecharge(?)}");
            if ("".equals(psCode)||psCode==null) {
                psCode1 = (long) -1;
            }else{
                psCode1 = Long.parseLong(psCode);
            }
            //为存储过程设置输入参数
            sqlQuery.setLong(0,psCode1 == null ? 0 : psCode1);
         //存储过程键值对应
         //sqlQuery.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
    //提交事务 trans.commit(); //获取存储过程的运行结果(得到的结果是Object类型的数组集合)存入list集合 List list = sqlQuery.list(); return list; }

    (2)修改:

        public String savePSGross(Map<String, Object> map) {
            Date date = null;
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
            Long psCode1;
            //企业编码
            String psCode =(String) map.get("psCode");
            //污染因子编码
            String monitorItemCode =(String) map.get("monitorItemCode");
            //充值时间
            String time = (String) map.get("time");
            //充值量
            String acpNumber =(String) map.get("acpNumber");
            //充值类型
            String rechargeType =(String) map.get("rechargeType");
            //创建session对象
            Session session = this.getSession();
            //创建事务的对象
            Transaction trans = session.beginTransaction();
            //调用存储过程
            SQLQuery query = session.createSQLQuery("{Call Proc_ZL_SavePSGrossInfo(?,?,?,?,?)}");
            if ("".equals(psCode)||psCode==null) {
                psCode1 = (long) -1;
            }else{
                psCode1 = Long.parseLong(psCode);
            }
            if (StringUtils.isNotEmpty(time)) {
                try {
                    date = sf.parse(time);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            //为存储过程设置输入参数
            query.setLong(0,psCode1 == null ? 0 : psCode1);
            query.setString(1,monitorItemCode == null ? "" : monitorItemCode);
            query.setString(2,time == null ? "" : time);
            query.setBigDecimal(3,acpNumber == null ? new BigDecimal("0") : new BigDecimal(acpNumber));
            query.setString(4,rechargeType == null ? "" : rechargeType);
            query.executeUpdate();    
            return "success";
        }

     (3)用JDBC方式连接数据库执行存储过程:

    所需的jar包:sqljdbc4.jar

    工具类:

    package com.jointsky.jointframe.ui.project.util;
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Properties;
    
    import com.jointsky.jointframe.system.config.service.JointFrameConfigManager;
    
    /**
     * 
     * <p>Description:JDBC连接工具类</p>
     * 
     * @author liuf
     * @date 2017-6-26
     * @version 1.0
     */
    public class JdbcUtil {
        public static Connection getConn() {
            String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            String dbURL = "jdbc:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=数据库名";
            String userName = "sa";
            String userPwd = "123.com";
            Connection dbConn = null;
            try {
    
                Class.forName(driverName);
    
                dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
    
                System.out.println("连接数据库成功");
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                System.out.print("连接失败");
    
            }
            return dbConn;
        }
    }


    调用方式:

        @Override
        public List<MonitorData> getAllMonitorDatas(Map<String, Object> filterMap)
                throws Exception {
            
            List<MonitorData> list = new ArrayList<MonitorData>();
            try {
                Connection dbConn = JdbcUtil.getConn();
                CallableStatement statement = dbConn.prepareCall("SET NOCOUNT ON exec dbo.ProcGetMonitorDatas ?,?,?,?,?,?,?,?");
                //开始时间
                Date beginTime = (Date) filterMap.get("beginTime");
                //结束时间
                Date endTime = (Date) filterMap.get("endTime");
                //编码
                String monitorPointCode = (String) filterMap.get("monitorPointCode");
                //编码
                String pollutantCode = (String)filterMap.get("pollutantCode");
                //编码
                String psCode = (String)filterMap.get("psCode");
                //类型
                Integer outputType = (Integer)filterMap.get("outputType");
                //类型
                Integer alarmType = (Integer) filterMap.get("alarmType");
                //类型细分
                Integer alarmTypeDetails = (Integer) filterMap.get("alarmTypeDetails");
                if (endTime == null) {
                    endTime = new Date();
                }
                //为存储过程设置输入参数
                statement.setDate(1,new java.sql.Date(beginTime == null ? null : beginTime.getTime()));
                statement.setDate(2,new java.sql.Date(endTime == null ? null : endTime.getTime()));
                statement.setString(3,(String) (monitorPointCode == null ? "" : monitorPointCode));
                statement.setString(4,(String) (pollutantCode == null ? "" : pollutantCode));
                statement.setString(5,(String) (psCode == null ? "" : psCode));
                statement.setInt(6,outputType == null ? -1 : outputType);
                statement.setInt(7,alarmType == null ? -1 : alarmType);
                statement.setInt(8,alarmTypeDetails == null ? -1 : alarmTypeDetails);
                ResultSet rs = statement.executeQuery();
                while (rs.next()) {
                    MonitorData c = new MonitorData();
                    //String id = rs.getString("id");
                    //String monitorPointName = rs.getString("jkkljj");
                    
                    c.setPsName(rs.getString("psName"));
                    c.setMonitorPointName(rs.getString("monitorPointName"));
                    c.setPollutantName(rs.getString("pollutantName"));
                    c.setMonitorTime(rs.getDate("monitorTime"));
                    c.setMonitorTimeCn(StringUtils.isEmpty(rs.getString("monitorTime")) ? "" : rs.getString("monitorTime").substring(0, 13) + "时");
                    c.setMonitorValueType(rs.getString("monitorValueType"));
                    c.setMonitorValue(rs.getString("monitorValue"));
                    c.setOutputType(Integer.parseInt(rs.getString("outputType")));
                    
                    list.add(c);
                }
                statement.close();
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            return list;
        }

     4.用Criteria执行查询:

    public Page<AddressBook> find(Page<AddressBook> page,
                Map<String, String> filterMap) {
            Criteria criteria = this.createCriteria();
            try {
                if (filterMap.size() > 0) {
                    String name = filterMap.get("fullName");
                    if (StringUtils.isNotEmpty(name)) {
                        criteria.add(Restrictions.like("fullName", name,
                                MatchMode.ANYWHERE));
                    }
                    String unit = filterMap.get("unit");
                    if (StringUtils.isNotEmpty(unit)) {
                        criteria.add(Restrictions.like("unit", unit,
                                MatchMode.ANYWHERE));
                    }
                    criteria.addOrder(Order.asc("fullName"));
                            
                }
                Page<AddressBook> pages = this.findByCriteria(page, criteria);
                return pages;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
  • 相关阅读:
    22、Flyweight 享元模式
    js随机点名器(简单)
    js随机点名器(简单)
    PHP
    PHP
    Laravel框架实现利用监听器进行sql语句记录功能
    Laravel框架实现利用监听器进行sql语句记录功能
    PhpStorm常用的一些快捷键
    PhpStorm常用的一些快捷键
    HTTP状态码汇总
  • 原文地址:https://www.cnblogs.com/shuilangyizu/p/6004876.html
Copyright © 2020-2023  润新知