下面我整理了一下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;
}

java与数据库交互常用到的一些方法的更多相关文章

  1. java 获取键盘输入常用的两种方法

    java 获取键盘输入常用的两种方法 方法1: 通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine ...

  2. java十五个常用类学习及方法举例

    <code class="language-java">import java.util.Scanner; import java.util.Properties; i ...

  3. Java中Object类常用的12个方法,你用过几个?

    前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”.Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object ...

  4. 【助教】Java获取数据库数据展示

    本文将给出一个最简单的Java查询数据库中一张表的数据并将查询结果展示在页面的例子. 实际上,我们要解决以下两个问题: Java与数据库交互(以JDBC为例) 数据展示在前台页面(以Servlet+J ...

  5. 说说Java程序和数据库交互的乱码解决

    本文就本人遇到的问题进行讲解 1.通过jdbc直连方式,连接Mysql数据库,从程序向数据库中写入数据出现的乱码解决方案. 当通过程序向Student表中写入一条数据时,写入数据库的内容会产生乱码. ...

  6. Java豆瓣电影爬虫——减少与数据库交互实现批量插入

    节前一个误操作把mysql中record表和movie表都清空了,显然我是没有做什么mysql备份的.所以,索性我把所有的表数据都清空的,一夜回到解放前…… 项目地址:https://github.c ...

  7. Eclipse中java向数据库中添加数据,更新数据,删除数据

    前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据. 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的信息) package com.ning ...

  8. OAF_JDBC系列1 - 数据库交互取值方式(案例)

    2014-06-15 Created By BaoXinjian

  9. 辅助的写与数据库交互的XML文件的类

    现在企业级WEB应用中与数据库交互的XML文件都是通过插件自动生成的,不过有些时候修改比较老的项目的时候也是需要手动的来做这一动作的!如下代码就是一个实现上述的功能的辅助类,在此记录一下以备后用! p ...

随机推荐

  1. 如何监控执行的SQL语句?

    环境: SQL Server 2012. 打开SQL Server Profiler. 在菜单中选择New Trace, 连接上SQL Server. 在弹出的窗口中选择Event selection ...

  2. leetcode第一刷_ Flatten Binary Tree to Linked List

    提示中说明了,改动后的链表相当于原树的前序遍历结果.前序遍历是根左右,因为要把转换后的左子树链接到根节点的右子树上,因此进入递归之后要先把节点的右子树保存下来,然后进入左子树,左子树转换后应该返回最后 ...

  3. nyoj-659-推断三角形(大坑)

    推断三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 小明非常喜欢研究三角形.如今,小明已经知道三角形的三条边.假设三条边能组成三角形,小明就会非常高兴,他就会得 ...

  4. 【linux】重置fedora root密码

    I forget root password on fedora,debian.fedora 17 fedora 18 fedora 19 fedora 20 fedora 21 fedora .de ...

  5. C#.NET常见问题(FAQ)-interface接口如何理解

    个人把interface理解为一种比较特殊的判断技巧,不是常规的变量类型比如判断字符串,判断数组,而是判断类的实例是否拥有某些属性或者方法(比如有十个女的穿一样的衣服,头上盖住,让新郎去猜哪一个是他的 ...

  6. STL - 容器 - 运行期指定排序准则

    RuntimeCmp.hpp #include <set> using namespace std; // type for runtime sorting criterion class ...

  7. Struts2(三)更改字符编码

    一.导入包和struts配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE stru ...

  8. redis 安装 命令

    安装: http://redis.io/download 在线操作命令:http://try.redis.io/ 命令查询:https://redis.readthedocs.org/en/lates ...

  9. How to hide the create button dynamical tree view in openerp ?

    <tree create="false" edit="false" > <tree attrs="{'create':[(" ...

  10. hosts.allow hosts.deny

    简单控制访问ip,hosts.allow/hsots.deny  a simple access control language that is based on client (host name ...