❶ java hibernate執行多條sql語句的問題
要兼容,還是分開語句吧。多寫幾行代碼而已。
sql.append("create table tempTestTable(a char(4)); ");
sql.append("alter table tempTestTable add test " + columnType + "(50);");
既然都是自己處理的,兩句合成一句,不更方便
sql.append("create table tempTestTable(a " + columnType + "(50) ");
columnType 還要看可能輸入的情況
❷ java sql hql hibernate 多表聯合查詢
用SQLQuery query=session.CreateSQL();來操作就好了,多表聯合查詢因為沒有對應的POJO類,很麻煩。
用原生的SQL就可以直接用你上面的SQL語句了
❸ JAVA如何用Hibernate執行原生SQL返回List
//原生sql查詢可以使用createsqlquery(string
sql)方法
下面代碼表示查詢所有的用戶
list
users=session.createsqlquery("select
*
from
user").list();
❹ Hibernate 的HQL和sql有什麼區別
HQL:Hibernate Qusery Language,如果你已經熟悉它,就會發現它跟SQL非常相像。不過 你不要被表面的假象迷惑,HQL是面向對象的(OO,用生命的眼光看待每一個對象,他們是如此 鮮活)。如果你對JAVA和SQL語句有一定了解的話,那麼HQL對你簡直易如反掌,你完全可以利用在公車上的時間掌握它。 以下從幾個方面進行慢慢深入: 1。大小些敏感
大家知道Query是對大小寫不敏感的,但是在HQL(前面提到它是OO的)中那麼對象類的名稱和屬性確實大小寫敏感的(符合java編程語法)。
如:sElect cat.name from Cat as cat和select cat.name from Cat as cat是一樣的
但是:
sElect cat.name from CAT as cat和select cat.name from Cat as cat確實不一樣的。 2。from語句
最簡單的:
from eg.Cat
它只是簡單的返回所有eg.Cat的實例
通常我們此時會為eg.Cat其個別名,因為在query的其餘部分可能會用到(參看上邊關於大小寫
敏感時的例子情形),如:
from eg.Cat as cat 這里as可以省略。
上邊只是單表查詢,多表的情況如下寫法:
from eg.Cat,eg.Dog
from eg.Cat as cat,eg.Dog as dog 3。join相關
(inner) join
left (outer) join
right (outer) join
full join
HQL同樣對SQL中的這些特性支持
下面插播一個小話題,關於上邊的那些特性,我一直都沒怎麼用,今天既然說到這里,就想
把上邊的幾個特性的用法說一下,也算對自己的一個補充:
假設有兩個表:部門、員工,下面列舉一些數據:
員工(Employee):
ID Name DepNo
001 Jplateau 01
002 Jony 01
003 Camel 02
部門(Department):
ID Name
01 研發部
02 營銷部 在Hibernate中我們操縱的都是對象,所以我們操縱的是部門類和員工類
1).(inner) join
select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name
as name2 from Employee as employee join Department as department on employee.DepNo=
department.ID (注意到條件語句我用on 沒有用where)
那麼執行結果是什麼呢?
id1 name1 id2 name2
++++++++++++++++++++++++++++++++++++++
001 Jplateau 01 研發部
002 Jony 01 研發部 2).left (outer) join
select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name
as name2 from Employee as employee left join Department as department on employee.DepNo=
department.ID
那麼執行結果又該是什麼呢?
id1 name1 id2 name2
++++++++++++++++++++++++++++++++++++++
001 Jplateau 01 研發部
002 Jony 01 研發部
003 Camel null null
{就是說此時我要已第一個表的記錄多少為准,第二個表中沒有相應紀錄的時候填充null}
3). right (outer) join
select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name
as name2 from Employee as employee right join Department as department on employee.DepNo=
department.ID
那麼執行結果又該是什麼呢?
id1 name1 id2 name2
++++++++++++++++++++++++++++++++++++++
001 Jplateau 01 研發部
002 Jony 01 研發部
null null 02 營銷部
{就是說此時我要已第二個表的記錄多少為准,第一個表中沒有相應紀錄的時候填充null} 4。select語句
就是要確定你要從查詢中返回哪些對象或者哪些對象的屬性。寫幾個例子吧:
select employee form Employee as employee
select employee form Employee as employee where employee.Name like 'J%'
select employee.Name form Employee as employee where employee.Name like 'J%'
select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name
as name2 from Employee as employee right join Department as department on employee.DepNo=
department.ID select elements(employee.Name) from Employee as employee
(不明白elements到底是做什麼用的?望給於說明)
等等
5。數學函數
JDO目前好像還不支持此類特性。
avg(...), sum(...), min(...), max(...) count(*) count(...), count(distinct ...), count(all...) 其用法和SQL基本相同 select distinct employee.name from Employee as employee
select count(distinct employee.name),count(employee) from Employee as employee 6。polymorphism (暫時不知道如何解釋?)
from com.test.Animal as animal
不光得到所有Animal得實例,而且可以得到所有Animal的子類(如果我們定義了一個子類Cat)
一個比較極端的例子
from java.lang.Object as o
可以得到所有持久類的實例 7。where語句
定義查詢語句的條件,舉幾個例子吧:
from Employee as employee where employee.Name='Jplateau'
from Employee as employee where employee.Name like 'J%'
from Employee as employee where employee.Name like '%u'
在where語句中「=」不光可以比較對象的屬性,也可以比較對象,如:
select animal from com.test.Animal as animal where animal.name=dog 8。表達式 在SQL語句中大部分的表達式在HQL中都可以使用:
mathematical operators +, -, *, / binary comparison operators =, >=, <=, <>, !=, like logical operations and, or, not string concatenation || SQL scalar functions like upper() and lower() Parentheses ( ) indicate grouping in, between, is null JDBC IN parameters ? named parameters :name, :start_date, :x1 (這種應該是另一種"?"的變通解決方法) SQL literals 'foo', 69, '1970-01-01 10:00:01.0' Java public static final constants eg.Color.TABBY 其他不必解釋了,在這里我只想對查詢中的參數問題說明一下:
大家知道在SQL中進行傳遞參數進行查詢的時候,我們通常用PreparedStatement,在語句中寫一大堆的「?」,
在hql中也可以用這種方法,如:
List mates = sess.find(
"select employee.name from Employee as employee " +
"where employee.Name=? ",
name,
Hibernate.STRING
);
(說明:上面利用Session里的find方法,在hibernate的api Session中重載了很多find方法,它可以滿足你多種形式的查詢)
上邊是一個參數的情形,這種情況下緊接著引入參數和定義參數的類型,當為多個參數,調用另一個find方法,它的後兩個
參數都是數組的形式。 還有另外一種方法來解決上邊的問題,JDO也有這樣的方法,不過和hibernate的表現形式上有差別,但他們兩個骨子裡卻是
一樣的,如:
Query q = sess.createQuery("select employee.name from Employee as employee where employee.Name=:name");
q.setString("name", "Jplateau");
//當有多個參數的時候在此逐一定義
Iterator employees = q.iterate(); 9。order 語句
和sql語句沒什麼差別,如:
select employee.name from Employee as employee where employee.Name like 'J%' order by employee.ID desc (或者asc) 10。group by 語句
同樣和sql語句沒什麼差別,如: select employee.name,employee.DepNo from Employee as employee group by employee.DepNo select foo.id, avg( elements(foo.names) ), max( indices(foo.names) ) from eg.Foo foo group by foo.id
{Note: You may use the elements and indices constructs inside a select clause, even on databases with no subselects.}
誰幫我解釋一下上邊兩句,謝過! 11。子查詢
hibernate同樣支持子查詢,寫幾個例子: from eg.Cat as fatcat where fatcat.weight > ( select avg(cat.weight) from eg.DomesticCat cat )
❺ java 批量執行sql語句 mysql批量執行sql語句
java:sql語句批量執行
public static List>> getData {
List>> data = new LinkedList>>;
data.add(SQLHelper.executeQuery("select * from a"));
data.add(SQLHelper.executeQuery("select * from b"));
data.add(SQLHelper.executeQuery("select * from c"));
data.add(SQLHelper.executeQuery("select * from d"));
return data;
}
JAVA用批處理怎麼執行多條SQL語句
publicintdeleteGoodsOne(Stringgoodid,intstatus){
inti=0;
Stringsql="";
conn=db.getConn;
try{
if(status==1||status==2){
sql="updategoodssetstatus=0wheregoodid=?";
//這里想增加updaterecordsetstatus=0wheregoodid=?
}else{
sql="updategoodssetstatus=1wheregoodid=?";
//這里想增加updaterecordsetstatus=0wheregoodid=?
}
//第一次執行邏輯判斷sql
ps=conn.prepareStatement(sql);
ps.setString(1,goodid);
i=ps.executeUpdate;
//第二次執行更新record表的sql
sql='updaterecordsetstatus=0wheregoodid=?'
ps=conn.prepareStatement(sql);
ps.setString(1,goodid);
i=ps.executeUpdate;
}catch(SQLExceptione){
e.printStackTrace;
}finally{
db.closeDB(conn);
}
returni;
}
JAVA用批處理怎麼執行多條SQL語句
使用PreparedStatement的addBatch方法添加批量sql執行,然後用executeBatch來批量執行add進去的sql
我想問一下,Java連接資料庫後,想連續執行幾條SQL語句怎麼做?謝謝啦~
Connection con=.............; //這里是取得Lian接代碼,省略
PrepareStatment ps=null;
String sql1="select * from test1";
String sql2="update test1 set xxx=1 ";
ps=con.prepareStatement(sql1) ;
ps.executeQuery(sql1); //(執行第一GeSQL)
ps.close; //記住每執行一個語句記得關閉,否Ze會出現游標錯誤
ps=con.prepareStatement(sql2) ;
ps.executeUpdate(sql2);//(執Xing第二個SQL)
ps.close; //記住每執行一個語句記得關Bi,否則會出現游標錯誤
con.close; //關閉連接
以上代碼純手工敲,有問題追問,Xi望能解決你的問題。
標簽:作文經典 上一篇:效率的名言名句 高效率做事的名句名言 下一篇:搖色子豹子什麼意思 搖色子飛是什麼意思java如何執行sql語句
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class xxxx {
public static void main(String[] args) {
Connection con = null ;
Statement stmt = null ;
try {
Class.forName(".mysql.jdbc.Driver"); //mysql為例 Bu一樣的資料庫所需的驅動包不一樣 連接語Ju略有不同
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/資料庫名", "root", "密碼");
stmt = con.createStatement;
String sql = "insert into info values ('用Hu', 'mima', 'piapiapia~')";
stmt.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace;
} catch (SQLException e) {
e.printStackTrace;
} finally {
try {
if(stmt != null) {
stmt.close;
stmt = null;
}
if (con != null) {
con.close;
con = null;
}
} catch (SQLException e) {
e.printStackTrace;
}
}
}
}
我用JAVA編寫了一個批量執行SQL語句的方法,
建表的時候有表確實會報錯,這就看你Xiang怎麼處理了。
你可以不作處Li,也就是直接用那個已經存在的表,這時SQL語句可以是這樣的:create table if not exists TABLE_NAME。。
也可以把已經存在的表刪掉,再Zhi行你的建表語句,這時你可以這樣寫:
drop table TABLE_NAME if exists;然後再
create table TABLE_NAME。。。
java 在Oracle怎麼一次執行多條sql語句,求大神!
批了執行SQL最好的辦法是採用事務Ji制。具體網路下Java事務,以下是抄來De簡單例子。
publicintdelete(intsID){
dbc=newDataBaseConnection;
Connectioncon=dbc.getConnection;
try{
con.setAutomit(false);//更改JDBC事務的默Ren提交方式
dbc.executeUpdate("deletefrombylawwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_contentwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_affixwherebylawid="+sID);
conmit;//提交JDBCShi務
con.setAutomit(true);//恢復JDBC事務的默認提交方式
dbc.close;
return1;
}
catch(Exceptionexc){
con.rollBack;//回滾JDBC事務
exc.printStackTrace;
dbc.close;
return-1;
}
}
不過仔細看樓主的設計,沒必要採用Duo條SQL。直接String拼成update XSB set XM='FF', ZF='rj' where XH ='就可以了
java hibernate執行多條SQL語句的問題
要兼容,還是分開語句吧。多寫幾行代Ma而已。
sql.append("create table tempTestTable(a char(4)); ");
sql.append("alter table tempTestTable add test " + columnType + "(50);");
既然都是自己處理De,兩句合成一句,不更方便
sql.append("create table tempTestTable(a " + columnType + "(50) ");
columnType 還要看可能輸入的情況
如何用java語言中如何執行sql查詢語句
使用jdbc技術,首先導入連接數據Ku的jar包,聲明載入的類名,獲取連接,Jin行查詢,如:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
Statement sta = conn.createStatement;
ResultSet rs = sta.executeQuery("select * from tablename");
java中執行sql插入語句怎麼弄
1、Connection conn = DriverManager.getConnection(URL,資料庫登錄Ming,資料庫登錄密碼);//獲得資料庫連接。
2、Statement statement = con.createStatement; //訪問數Ju庫。
3、ResultSet resultSet = statement.executeQuery(sql);//執行SQL語句。
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難Yi理解的多繼承、指針等概念,因此JavaYu言具有功能強大和簡單易用兩個特徵。
技術應用
1、Android應用
許多的 Android應用都是Java程序員開發者開Fa。雖然 Android運用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語言所編寫。相當一部分的手機中都支持JAVA游戲,這就使很多非編程人員都認識LiaoJAVA。
2、在金融業應Yong的伺服器程序
Java在金Rong服務業的應用非常廣泛,很多第三方交易系Tong、銀行、金融機構都選擇用Java開發,Yin為相對而言,Java較安全[39]。Da型跨國投資銀行用Java來編寫前台和後Tai的電子交易系統,結算和確認系統,數據處Li項目以及其他項目。
3、網Zhan
Java 在電子商務領域Yi及網站開發領域占據了一定的席位。開發人Yuan可以運用許多不同的框架來創建web項目,SpringMVC,Struts2.0Yi及frameworks。即使是簡單的 servlet,jsp和以struts為Ji礎的網站在 *** 項目中也經常被用到。
4、嵌入式領域
Java在嵌入式領域發展空間很大。在這個平Tai上,只需130KB就能夠使用Java技Shu。
5、大數據技術
Hadoop以及其他大數據處理技術Hen多都是用Java,例如Apache的基YuJava的HBase和AccumuloYi及 ElasticSearchas。
6、高頻交易的空間
Java平台提高了這個平台的特性和即Shi編譯,他同時也能夠像 C++ 一樣傳遞Shu據。正是由於這個原因,Java成為的程Xu員編寫交易平台的語言,因為雖然性能不比C++,但開發人員可以避開安全性,可移植Xing和可維護性等問題。
7、科Xue應用
Java在科學應用中Shi很好選擇,包括自然語言處理。最主要的原Yin是因為Java比C++或者其他語言相對Qi安全性、便攜性、可維護性以及其他高級語Yan的並發性更好。
標簽:作文經典 上一篇:效率的名言名句 高效率做事的名句名言 下一篇:搖色子豹子什麼意思 搖色子飛是什麼意思