① JAVA如何用Hibernate执行原生sql返回List
//原生sql查询可以使用createsqlquery(string
sql)方法
下面代码表示查询所有的用户
list
users=session.createsqlquery("select
*
from
user").list();
② java 获取SQL查询语句返回的结果
step1:构造连接
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db","root","123");
step2:构造语句
String sql = "select username,password from t_user where username=?";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, "zhangshan"); //给SQL的"?"(问号)传值。
step3:执行查询
ResultSet rs = stmt.executeQuery(); //rs就是SQL查询语句返回的结果集
step4:处理结果(java 获取SQL查询语句返回的结果)
List list = new ArrayList();
//遍历结果集,这样写就可以了,就是一个循环,有多少条记录,这里就会循环多少次,
//一次就是一条记录,想象一下就像一个表的一条记录
//在这里可以做查询出来的数据处理,可以封装成对象之类的(就是把值给它)
if(rs.next()) { //遍历结果集,这样写就可以了
User u = new User();
String username = rs.getString("username");
String address = rs.getString("password ");
u.setUsername(username);
u.setAddress(address);
list.add(u);
}
//上面这个例子意思是,把每一条记录封装成了一个User对象,然后这些User对象都放存入到了一个list
step4:关闭连接等
③ 关于java读取sql,得到的结果list的问题。。。
package com.accp.bbs.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class BaseDao{
public final static String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
public final static String URL = "jdbc:sqlserver://localhost:1433;DataBaseName = bbs";
public final static String DBNAME = "sa";
public final static String DBPASS = "sa";
public static Connection getConn() throws ClassNotFoundException, SQLException {
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL, DBNAME, DBPASS);
return conn;
}
public List<Integer> getList(){
List<Integer> list= new ArrayList<Integer>();
String SQL="select Id from user";
try{
Connection conn = BaseDao.getConn();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
while(rs.next()){
list.add(rs.getInt("Id"));
}
}catch(Exception e){
System.out.println("有异常");
}
return list;
}
public static void main(String[] args) {
BaseDao baseDao = new BaseDao();
List<Integer> list= baseDao.getList();
for(Integer i : list){
System.out.println(i);
}
}
}
④ 请教高手:java中 SQL查询结果返回为List<Map<String,Object>>结果集顺序问题
List<Map<String,Object>> list=..
for (int i=0;i<list.size(),i++)
{
Map map=(Map)list.get(i);
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext())
{
String key = (String) iterator.next();
Object object = map.get(key);
}
}
⑤ java 用返回的list去查询数据库,返回list
分析你的逻辑应该如下:
1、查询表1中符合条件的信息,获取一个结果集合1;
2、基于结果集合1循环,检索表2,获取结果集合2。
如此,如果表1、表2间存在直接关联关系(即直接使用结果集合1中的部分信息作为表2查询的条件),那么完全可以在后台将两张表关联查询,这样避免了通过java进行循环,在大数量级情况下会严重占用内存。
如果表1,表2间没有直接的关联关系(即通过循环表1,判断其中条件后按照其它的特定对照值去查询表2),那么仍然建议使用后台表关联查询,及将表1查询的结果集按照不同的条件获取的值转换成对应的映射值后作为一个基准集合,然后将这个集合与表2关联查询即可。具体的sql语句,得根据你使用的数据库和具体场景去编写。
总之,此类情况,完全可以交由数据库搞定,如果使用你现在的逻辑(即查询表1,循环结果集1,然后查询表2,获取结果集2),虽然原则上没有错,但会增加很多内存开销,在大数据量级的情况下,非常容易出现内存溢出的异常,并不作为合理的编码方式。
⑥ java 获取SQL查询语句返回的结果
step1:构造连接x0dx0a Class.forName("com.mysql.jdbc.Driver"); x0dx0a Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db","root","123"); x0dx0ax0dx0astep2:构造语句x0dx0aString sql = "select username,password from t_user where username=?"; x0dx0aPreparedStatement stmt = con.prepareStatement(sql); x0dx0astmt.setString(1, "zhangshan"); //给SQL的"?"(问号)传值。x0dx0ax0dx0astep3:执行查询x0dx0aResultSet rs = stmt.executeQuery(); //rs就是SQL查询语句返回的结果集x0dx0ax0dx0astep4:处理结果(java 获取SQL查询语句返回的结果)x0dx0a List list = new ArrayList();x0dx0a //遍历结果集,这样写就可以了,就是一个循环,有多少条记录,这里就会循环多少次,x0dx0a //一次就是一条记录,想象一下就像一个表的一条记录x0dx0a //在这里可以做查询出来的数据处理,可以封装成对象之类的(就是把值给它)x0dx0a if(rs.next()) { //遍历结果集,这样写就可以了x0dx0a User u = new User();x0dx0a String username = rs.getString("username"); x0dx0a String address = rs.getString("password "); x0dx0a u.setUsername(username);x0dx0a u.setAddress(address);x0dx0a list.add(u);x0dx0a } x0dx0a //上面这个例子意思是,把每一条记录封装成了一个User对象,然后这些User对象都放存入到了一个listx0dx0ax0dx0astep4:关闭连接等