⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 querysql.html

📁 是一个中文的Hibernate库文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html><head>      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">   <title>&#31532;&nbsp;17&nbsp;&#31456;&nbsp;Native SQL&#26597;&#35810;</title><link rel="stylesheet" href="../shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="up" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="previous" href="querycriteria.html" title="&#31532;&nbsp;16&nbsp;&#31456;&nbsp;&#xA;    &#26465;&#20214;&#26597;&#35810;(Criteria Queries)&#xA;    "><link rel="next" href="filters.html" title="&#31532;&nbsp;18&nbsp;&#31456;&nbsp;&#36807;&#28388;&#25968;&#25454;"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">&#31532;&nbsp;17&nbsp;&#31456;&nbsp;Native SQL&#26597;&#35810;</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="querycriteria.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="filters.html">&#19979;&#19968;&#39029;</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="querysql"></a>&#31532;&nbsp;17&nbsp;&#31456;&nbsp;Native SQL&#26597;&#35810;</h2></div></div><div></div></div><p>		&#20320;&#20063;&#21487;&#20197;&#20351;&#29992;&#20320;&#30340;&#25968;&#25454;&#24211;&#30340;Native SQL&#35821;&#35328;&#26469;&#26597;&#35810;&#25968;&#25454;&#12290;&#36825;&#23545;&#20320;&#22312;&#35201;&#20351;&#29992;&#25968;&#25454;&#24211;&#30340;&#26576;&#20123;&#29305;&#24615;&#30340;&#26102;&#20505;(&#27604;&#22914;&#35828;&#22312;&#26597;&#35810;&#25552;&#31034;&#25110;&#32773;Oracle&#20013;&#30340;		<tt class="literal">CONNECT</tt>&#20851;&#38190;&#23383;)&#65292;&#36825;&#26159;&#38750;&#24120;&#26377;&#29992;&#30340;&#12290;&#36825;&#23601;&#33021;&#22815;&#25195;&#28165;&#20320;&#25226;&#21407;&#26469;&#30452;&#25509;&#20351;&#29992;SQL/JDBC &#30340;&#31243;&#24207;&#36801;&#31227;&#21040;&#22522;&#20110;		Hibernate&#24212;&#29992;&#30340;&#36947;&#36335;&#19978;&#30340;&#38556;&#30861;&#12290;    </p><p>		Hibernate3&#20801;&#35768;&#20320;&#20351;&#29992;&#25163;&#20889;&#30340;sql&#26469;&#23436;&#25104;&#25152;&#26377;&#30340;create,update,delete,&#21644;load&#25805;&#20316;&#65288;&#21253;&#25324;&#23384;&#20648;&#36807;&#31243;&#65289;    </p><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="querysql-creating"></a>17.1.&nbsp;&#21019;&#24314;&#19968;&#20010;&#22522;&#20110;SQL&#30340;<tt class="literal">Query</tt></h2></div></div><div></div></div><p>			SQL&#26597;&#35810;&#26159;&#36890;&#36807;<tt class="literal">SQLQuery</tt>&#25509;&#21475;&#26469;&#25511;&#21046;&#30340;&#65292;&#23427;&#26159;&#36890;&#36807;&#35843;&#29992;Session.createSQLQuery()&#26041;&#27861;&#26469;&#33719;&#24471;        </p><pre class="programlisting">List cats = sess.createSQLQuery("select {cat.*} from cats cat")        .addEntity("cat", Cat.class);        .setMaxResults(50);        .list();</pre><p>			&#36825;&#20010;&#26597;&#35810;&#25351;&#23450;&#20102;:        </p><div class="itemizedlist"><ul type="disc"><li><p>			SQL&#26597;&#35810;&#35821;&#21477;&#65292;&#23427;&#24102;&#19968;&#20010;&#21344;&#20301;&#31526;&#65292;&#21487;&#20197;&#35753;Hibernate&#20351;&#29992;&#23383;&#27573;&#30340;&#21035;&#21517;.        </p></li><li><p>			&#26597;&#35810;&#36820;&#22238;&#30340;&#23454;&#20307;&#65292;&#21644;&#23427;&#30340;SQL&#34920;&#30340;&#21035;&#21517;.        </p></li></ul></div><p>			<tt class="literal">addEntity()</tt>&#26041;&#27861;&#23558;SQL&#34920;&#30340;&#21035;&#21517;&#21644;&#23454;&#20307;&#31867;&#32852;&#31995;&#36215;&#26469;&#65292;&#24182;&#19988;&#30830;&#23450;&#26597;&#35810;&#32467;&#26524;&#38598;&#30340;&#24418;&#24577;&#12290;        </p><p>			<tt class="literal">addJoin()</tt>&#26041;&#27861;&#21487;&#20197;&#34987;&#29992;&#20110;&#36733;&#20837;&#20854;&#20182;&#30340;&#23454;&#20307;&#21644;&#38598;&#21512;&#30340;&#20851;&#32852;&#65292;TODO:examples!        </p><p>			&#21407;&#29983;&#30340;SQL&#26597;&#35810;&#21487;&#33021;&#36820;&#22238;&#19968;&#20010;&#31616;&#21333;&#30340;&#26631;&#37327;&#20540;&#25110;&#32773;&#19968;&#20010;&#26631;&#37327;&#21644;&#23454;&#20307;&#30340;&#32467;&#21512;&#20307;&#12290;        </p><pre class="programlisting">Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")        .addScalar("maxWeight", Hibernate.DOUBLE);        .uniqueResult();</pre></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="querysql-aliasreferences"></a>17.2.&nbsp;&#21035;&#21517;&#21644;&#23646;&#24615;&#24341;&#29992;</h2></div></div><div></div></div><p>			&#19978;&#38754;&#20351;&#29992;&#30340;<tt class="literal">{cat.*}</tt>&#26631;&#35760;&#26159; "&#25152;&#26377;&#23646;&#24615;" &#30340;&#31616;&#20889;.&#20320;&#21487;&#20197;&#26174;&#24335;&#22320;&#21015;&#20986;&#38656;&#35201;&#30340;&#23383;&#27573;,&#20294;&#26159;&#20320;&#24517;&#39035;&#35753;Hibernate			&#20026;&#27599;&#19968;&#20010;&#23646;&#24615;&#27880;&#20837;&#23383;&#27573;&#30340;&#21035;&#21517;.&#36825;&#20123;&#23383;&#27573;&#30340;&#31449;&#20301;&#31526;&#26159;&#20197;&#23383;&#27573;&#21035;&#21517;&#20026;&#21069;&#23548;,&#20877;&#21152;&#19978;&#23646;&#24615;&#21517;.&#22312;&#19979;&#38754;&#30340;&#20363;&#23376;&#37324;,&#25105;&#20204;&#20174;&#19968;&#20010;&#20854;&#20182;&#30340;&#34920;(<tt class="literal">cat_log</tt>)			&#20013;&#33719;&#21462;<tt class="literal">Cat</tt>&#23545;&#35937;,&#32780;&#38750;Cat&#23545;&#35937;&#21407;&#26412;&#22312;&#26144;&#23556;&#20803;&#25968;&#25454;&#20013;&#22768;&#26126;&#30340;&#34920;.&#27880;&#24847;&#25105;&#20204;&#29978;&#33267;&#22312;where&#23376;&#21477;&#20013;&#20063;&#21487;&#20197;&#20351;&#29992;&#23646;&#24615;&#21035;&#21517;.            &#23545;&#20110;&#21629;&#21517;&#26597;&#35810;,{}&#35821;&#27861;&#24182;&#19981;&#26159;&#24517;&#38656;&#30340;.&#20320;&#21487;&#20197;&#22312;<a href="querysql.html#querysql-namedqueries" title="17.3.&nbsp;&#21629;&#21517;SQL&#26597;&#35810;">&#31532;&nbsp;17.3&nbsp;&#33410; &#8220;&#21629;&#21517;SQL&#26597;&#35810;&#8221;</a>&#24471;&#21040;&#26356;&#22810;&#30340;&#32454;&#33410;.        </p><pre class="programlisting">String sql = "select cat.originalId as {cat.id}, " +    "cat.mateid as {cat.mate}, cat.sex as {cat.sex}, " +    "cat.weight*10 as {cat.weight}, cat.name as {cat.name} " +    "from cat_log cat where {cat.mate} = :catId"    List loggedCats = sess.createSQLQuery(sql)    .addEntity("cat", Cat.class)    .setLong("catId", catId)    .list();</pre><p>            <span class="emphasis"><em>&#27880;&#24847;:</em></span>&#22914;&#26524;&#20320;&#26126;&#30830;&#22320;&#21015;&#20986;&#20102;&#27599;&#20010;&#23646;&#24615;,&#20320;&#24517;&#39035;&#21253;&#21547;&#36825;&#20010;&#31867;<span class="emphasis"><em>&#21644;&#23427;&#30340;&#23376;&#31867;&#30340;&#23646;&#24615;</em></span>! <span class="emphasis"><em>and its subclasses</em></span>!        </p></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="querysql-namedqueries"></a>17.3.&nbsp;&#21629;&#21517;SQL&#26597;&#35810;</h2></div></div><div></div></div><p>			&#21487;&#20197;&#22312;&#26144;&#23556;&#25991;&#26723;&#20013;&#23450;&#20041;&#26597;&#35810;&#30340;&#21517;&#23383;,&#28982;&#21518;&#23601;&#21487;&#20197;&#35937;&#35843;&#29992;&#19968;&#20010;&#21629;&#21517;&#30340;HQL&#26597;&#35810;&#19968;&#26679;&#30452;&#25509;&#35843;&#29992;&#21629;&#21517;SQL&#26597;&#35810;.&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;,&#25105;&#20204;<span class="emphasis"><em>&#19981;</em></span>			&#38656;&#35201;&#35843;&#29992;<tt class="literal">addEntity()</tt>&#26041;&#27861;.        </p><pre class="programlisting">&lt;sql-query name="mySqlQuery"&gt;    &lt;return alias="person" class="eg.Person"/&gt;    SELECT person.NAME AS {person.name},           person.AGE AS {person.age},           person.SEX AS {person.sex}    FROM PERSON person WHERE person.NAME LIKE 'Hiber%'&lt;/sql-query&gt;</pre><pre class="programlisting">List people = sess.getNamedQuery("mySqlQuery")    .setMaxResults(50)    .list();</pre><p>			&#19968;&#20010;&#21629;&#21517;&#26597;&#35810;&#21487;&#33021;&#20250;&#36820;&#22238;&#19968;&#20010;&#26631;&#37327;&#20540;.&#20320;&#24517;&#39035;&#20351;&#29992;<tt class="literal">&lt;return-scalar&gt;</tt>&#20803;&#32032;&#26469;&#25351;&#23450;&#23383;&#27573;&#30340;&#21035;&#21517;&#21644;			Hibernate&#31867;&#22411;        </p><pre class="programlisting">&lt;sql-query name="mySqlQuery"&gt;    &lt;return-scalar column="name" type="string"/&gt;    &lt;return-scalar column="age" type="long"/&gt;    SELECT p.NAME AS name,           p.AGE AS age,    FROM PERSON p WHERE p.NAME LIKE 'Hiber%'&lt;/sql-query&gt;</pre><p>			 <tt class="literal">&lt;return-join&gt;</tt>&#21644;<tt class="literal">&lt;load-collection&gt;</tt>&#20803;&#32032;&#20998;&#21035;&#29992;&#20316;			 &#22806;&#36830;&#25509;&#21644;&#23450;&#20041;&#37027;&#20123;&#21021;&#22987;&#21270;&#38598;&#21512;&#30340;&#26597;&#35810;         </p><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="propertyresults"></a>17.3.1.&nbsp;&#20351;&#29992;return-property&#26469;&#26126;&#30830;&#22320;&#25351;&#23450;&#23383;&#27573;/&#21035;&#21517;</h3></div></div><div></div></div><p>				&#20351;&#29992;<tt class="literal">&lt;return-property&gt;</tt>&#20320;&#21487;&#20197;&#26126;&#30830;&#30340;&#21578;&#35785;Hibernate&#20351;&#29992;&#21738;&#20123;&#23383;&#27573;,&#36825;&#21644;&#20351;&#29992;<tt class="literal">{}</tt>-&#35821;&#27861;				&#26469;&#35753;Hibernate&#27880;&#20837;&#23427;&#33258;&#24049;&#30340;&#21035;&#21517;&#26159;&#30456;&#21453;&#30340;.             </p><pre class="programlisting">&lt;sql-query name="mySqlQuery"&gt;    &lt;return alias="person" class="eg.Person"&gt;      &lt;return-property name="name" column="myName"/&gt;      &lt;return-property name="age" column="myAge"/&gt;      &lt;return-property name="sex" column="mySex"/&gt;    &lt;/return&gt;    SELECT person.NAME AS myName,           person.AGE AS myAge,           person.SEX AS mySex,    FROM PERSON person WHERE person.NAME LIKE :name&lt;/sql-query&gt;</pre><tt class="literal">&lt;return-property&gt;</tt>&#20063;&#21487;&#29992;&#20110;&#22810;&#20010;&#23383;&#27573;,&#23427;&#35299;&#20915;&#20102;&#20351;&#29992;<tt class="literal">{}</tt>-&#35821;&#27861;&#19981;&#33021;&#32454;&#31890;&#24230;&#25511;&#21046;&#22810;&#20010;&#23383;&#27573;&#30340;&#38480;&#21046;             <pre class="programlisting">&lt;sql-query name="organizationCurrentEmployments"&gt;            &lt;return alias="emp" class="Employment"&gt;                         &lt;return-property name="salary"&gt;                &lt;return-column name="VALUE"/&gt;               &lt;return-column name="CURRENCY"/&gt;                         &lt;/return-property&gt;             &lt;return-property name="endDate" column="myEndDate"/&gt;            &lt;/return&gt;            SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},             STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},            REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY            FROM EMPLOYMENT            WHERE EMPLOYER = :id AND ENDDATE IS NULL            ORDER BY STARTDATE ASC&lt;/sql-query&gt;</pre><p>				&#27880;&#24847;&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;,&#25105;&#20204;&#20351;&#29992;&#20102;<tt class="literal">&lt;return-property&gt;</tt>&#32467;&#21512;<tt class="literal">{}</tt>&#30340;&#27880;&#20837;&#35821;&#27861;.				&#20801;&#35768;&#29992;&#25143;&#26469;&#36873;&#25321;&#22914;&#20309;&#24341;&#29992;&#23383;&#27573;&#20197;&#21450;&#23646;&#24615;.            </p><p>			 &#22914;&#26524;&#20320;&#26144;&#23556;&#19968;&#20010;&#35782;&#21035;&#22120;(discriminator),&#20320;&#24517;&#39035;&#20351;&#29992;&lt;return-discriminator&gt;&#26469;&#25351;&#23450;&#35782;&#21035;&#22120;&#23383;&#27573;            </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="sp_query"></a>17.3.2.&nbsp;&#20351;&#29992;&#23384;&#20648;&#36807;&#31243;&#26469;&#26597;&#35810;</h3></div></div><div></div></div><p>				 Hibernate 3&#24341;&#20837;&#20102;&#23545;&#23384;&#20648;&#36807;&#31243;&#26597;&#35810;&#30340;&#25903;&#25345;.				 				 &#23384;&#20648;&#36807;&#31243;&#24517;&#39035;&#36820;&#22238;&#19968;&#20010;&#32467;&#26524;&#38598;,&#20316;&#20026;Hibernate&#33021;&#22815;&#20351;&#29992;&#30340;&#31532;&#19968;&#20010;&#22806;&#37096;&#21442;&#25968;.				 				 &#19979;&#38754;&#26159;&#19968;&#20010;Oracle9&#21644;&#26356;&#39640;&#29256;&#26412;&#30340;&#23384;&#20648;&#36807;&#31243;&#20363;&#23376;.                                  </p><pre class="programlisting">CREATE OR REPLACE FUNCTION selectAllEmployments     RETURN SYS_REFCURSOR AS     st_cursor SYS_REFCURSOR; BEGIN     OPEN st_cursor FOR  SELECT EMPLOYEE, EMPLOYER,  STARTDATE, ENDDATE,  REGIONCODE, EID, VALUE, CURRENCY  FROM EMPLOYMENT;       RETURN  st_cursor;  END;</pre><p>                 				 &#22312;Hibernate&#37324;&#35201;&#35201;&#20351;&#29992;&#36825;&#20010;&#26597;&#35810;,&#20320;&#38656;&#35201;&#36890;&#36807;&#21629;&#21517;&#26597;&#35810;&#26469;&#26144;&#23556;&#23427;.                              </p><pre class="programlisting">&lt;sql-query name="selectAllEmployees_SP" callable="true"&gt;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -