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查记录数该怎么查呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)