shell脚本如何打印hql的执行结果

shell脚本如何打印hql的执行结果,第1张

shell脚本如何打印hql的执行结果的方法如下:

1、将hql保存到文件中,然后使用hive-f命令执行hql文件。

2、使用hive--hiveconf命令指定hive环境变量,并将hql执行结果输出到一个文件中。

3、使用cat或者more命令读取上述文件,可以将hql执行结果直接打印出来。

hql : sessioncreateSQLQuery("Select pid,pname,eemail from tb_person as p join tb_email as e on pid = eperson_id 其中tb_person"); //得到的是 list

或者 利用 hibernatequery

sessioncreateQuery(from Email); //也可

关键是 hbmxml 映射文件你配好了没,如果这个配好了 对应关系 直接取即可 不会配的话 可以问我

很多方法

比如这样一个持久化对象,id是主键

public class Com {

String id;

String name;

//省略set get

{

1select count(id) from Com

2select count(c) from Com c

3

Session session = //得到一个orghibernateSession

Query query = sessioncreateQuery("from Com");

ScrollableResults scrollableResults = queryscroll(ScrollModeSCROLL_SENSITIVE);

scrollableResultslast();

//rowNumber从0开始,为空时则为-1,因此计算totalCount时应+1

int totalCount = scrollableResultsgetRowNumber() + 1;

不明白你为什么非要直接返回int,hibernate把所有 *** 作的数据都看作对象, *** 作时int需要转换为Integer,long需要转换为Long,取的时候也一样。你可以看看配置文件里,都是这么定义了,这些类型都是继承了javaioSerializable可序列化的。楼上说的find方法可以,但取出来的是一个Object类对象其实是一个Integer对象,你必然要强转一下变成Integer,如:

Integer a = (Integer)listget(0);

然后再

int b = aintValue();

这样就将一个Integer类型的转换int类型。

int b = aintValue();这一步会根据你的jre的不同,可以省略,有些jre却必须要你手写,有些则程序就会帮你做了。

requestsetCharacterEncoding("utf-8");

responsesetContentType("text/html;charset=utf-8");

PrintWriter out = responsegetWriter();

//获取请求参数

int id = IntegerparseInt(requestgetParameter("id"));

//调用dao层将这个id的学生找到

StudentDao sd = new StudentDao();

Student s = sdfindById(id);

//将学生对象保存到request范围

requestsetAttribute("s", s);

//使用请求转发,让修改页面展示将要被修改的学生信息

requestgetRequestDispatcher("updatejsp")forward(request, response);

outflush();

outclose();

这是servlet里面的内容

public Student findById(int id){

Student s = null;

Connection conn = null;

PreparedStatement pstm = null;

ResultSet rs = null;

String sql = "select from student where stuid=";

//获取连接

conn = BaseDaogetConn();

try {

pstm = connprepareStatement(sql);

pstmsetInt(1, id);

//执行查询

rs = pstmexecuteQuery();

if(rsnext()){

int stuId = rsgetInt("stuid");

String stuName = rsgetString("stuname");

String stuSex = rsgetString("stusex");

int stuAge = rsgetInt("stuage");

String stuBid = rsgetString("stubid");

//先将数据封装到Student对象中

s = new Student(stuId, stuName, stuSex, stuAge, stuBid);

//将对象放入集合

}

} catch (SQLException e) {

eprintStackTrace();

}finally{

BaseDaocloseAll(conn, pstm, rs);

}

return s;

}

//这是写在Dao里面的内容

//这个是BaseDao   加载驱动 获取链接的

public class BaseDao{

//加载驱动

static{

try {

ClassforName("oraclejdbcdriverOracleDriver");

} catch (ClassNotFoundException e) {

eprintStackTrace();

}

}

//获取连接

public static Connection getConn(){

Connection conn = null;

try {

conn = DriverManagergetConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "130130");

} catch (SQLException e) {

eprintStackTrace();

}

return conn;

}

//关闭所有资源

public static void closeAll(Connection conn,Statement st,ResultSet rs){

try {

if(null!=rs){

rsclose();

}

if(null!=st){

stclose();

}

if(null!=conn){

connclose();

}

} catch (SQLException e) {

eprintStackTrace();

}

}

}

取第二页的数据时,将当前页,传给action,action再调用dao层,拿到指定范围的数据。

hql这样限制:setFirstResult(开始取数据的位置);setMaxResult(取数据的数量;

返回到jsp页面后是一个集合。比如写条数据记录在表格的每行上,就在表格的行上做循环,

<%

for(int i=0;i<resultListsize();i++) {

%>

表格行的代码。。。。

<%

}

%>

顾名思义,replaceFirst即是替换第一个,第一个参数是被替换的值,第二个是替换后的新值按照你问题所描述的,即是把hql中第一个and替换成where

类似的方法还有replace,replaceAll。

3replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);

4replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "")把一个字符串所有的数字字符都换成星号,即是把所有第一个参数都替换成第二个新值,例如刚刚的hqltoString()repacleAll("and","where")就是把hql中所有的and都替换成where

以上就是关于shell脚本如何打印hql的执行结果全部的内容,包括:shell脚本如何打印hql的执行结果、Java,hibernate谁写个hql(sqlserver2005的多表连接查询语句)、谁知道用hql查记录数该怎么查呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9395152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存