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

📄 querysql.html

📁 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<html><head>      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">   <title>&#31532;&nbsp;16&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;15&nbsp;&#31456;&nbsp;&#xA;    &#26465;&#20214;&#26597;&#35810;(Criteria Queries)&#xA;    "><link rel="next" href="filters.html" title="&#31532;&nbsp;17&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;16&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;16&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>16.1.&nbsp;&#20351;&#29992;<tt class="literal">SQLQuery</tt></h2></div></div><div></div></div><p>&#23545;&#21407;&#29983;SQL&#26597;&#35810;&#25191;&#34892;&#30340;&#25511;&#21046;&#26159;&#36890;&#36807;<tt class="literal">SQLQuery</tt>&#25509;&#21475;&#36827;&#34892;&#30340;&#65292;&#36890;&#36807;&#25191;&#34892;<tt class="literal">Session.createSQLQuery()</tt>&#33719;&#21462;&#36825;&#20010;&#25509;&#21475;&#12290;&#26368;&#31616;&#21333;&#30340;&#24773;&#20917;&#19979;&#65292;&#25105;&#20204;&#21487;&#20197;&#37319;&#29992;&#20197;&#19979;&#24418;&#24335;&#65306;</p><pre class="programlisting">List cats = sess.createSQLQuery("select * from cats")    .addEntity(Cat.class)    .list();</pre><p>&#36825;&#20010;&#26597;&#35810;&#25351;&#23450;&#20102;:</p><div class="itemizedlist"><ul type="disc"><li><p>SQL&#26597;&#35810;&#23383;&#31526;&#20018;</p></li><li><p>&#26597;&#35810;&#36820;&#22238;&#30340;&#23454;&#20307;</p></li></ul></div><p>&#36825;&#37324;&#65292;&#32467;&#26524;&#38598;&#23383;&#27573;&#21517;&#34987;&#20551;&#35774;&#20026;&#19982;&#26144;&#23556;&#25991;&#20214;&#20013;&#25351;&#26126;&#30340;&#23383;&#27573;&#21517;&#30456;&#21516;&#12290;&#23545;&#20110;&#36830;&#25509;&#20102;&#22810;&#20010;&#34920;&#30340;&#26597;&#35810;&#65292;&#36825;&#23601;&#21487;&#33021;&#36896;&#25104;&#38382;&#39064;&#65292;&#22240;&#20026;&#21487;&#33021;&#22312;&#22810;&#20010;&#34920;&#20013;&#20986;&#29616;&#21516;&#26679;&#21517;&#23383;&#30340;&#23383;&#27573;&#12290;&#19979;&#38754;&#30340;&#26041;&#27861;&#23601;&#21487;&#20197;&#36991;&#20813;&#23383;&#27573;&#21517;&#37325;&#22797;&#30340;&#38382;&#39064;:</p><pre class="programlisting">List cats = sess.createSQLQuery("select {cat.*} from cats cat")    .addEntity("cat", Cat.class)    .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;.        </p><pre class="programlisting">List cats = sess.createSQLQuery(        "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"    )    .addEntity("cat", Cat.class)    .addJoin("kitten", "cat.kittens")    .list();</pre><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><p>&#38500;&#27492;&#20043;&#22806;&#65292;&#20320;&#36824;&#21487;&#20197;&#22312;&#20320;&#30340;hbm&#25991;&#20214;&#20013;&#25551;&#36848;&#32467;&#26524;&#38598;&#26144;&#23556;&#20449;&#24687;&#65292;&#22312;&#26597;&#35810;&#20013;&#20351;&#29992;&#12290;</p><pre class="programlisting">List cats = sess.createSQLQuery(        "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"    )    .setResultSetMapping("catAndKitten")    .list();</pre></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="querysql-aliasreferences"></a>16.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="16.3.&nbsp;&#21629;&#21517;SQL&#26597;&#35810;">&#31532;&nbsp;16.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;<span class="emphasis"><em>&#36825;&#20010;&#31867;</em></span>&#21644;<span class="emphasis"><em>&#23427;&#30340;&#23376;&#31867;</em></span>&#30340;&#23646;&#24615;!        </p><p>    &#19979;&#34920;&#21015;&#20986;&#20102;&#20351;&#29992;&#21035;&#21517;&#27880;&#23556;&#21442;&#25968;&#30340;&#19981;&#21516;&#21487;&#33021;&#24615;&#12290;&#27880;&#24847;&#65306;&#19979;&#38754;&#32467;&#26524;&#20013;&#30340;&#21035;&#21517;&#21482;&#26159;&#31034;&#20363;&#65292;&#23454;&#29992;&#26102;&#27599;&#20010;&#21035;&#21517;&#38656;&#35201;&#21807;&#19968;&#24182;&#19988;&#19981;&#21516;&#30340;&#21517;&#23383;&#12290;    </p><div class="table"><a name="aliasinjection-summary"></a><p class="title"><b>&#34920;&nbsp;16.1.&nbsp;&#21035;&#21517;&#27880;&#23556;(alias injection names)</b></p><table summary="&#21035;&#21517;&#27880;&#23556;(alias injection names)" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>&#25551;&#36848;</th><th>&#35821;&#27861;</th><th>&#31034;&#20363;</th><td class="auto-generated">&nbsp;</td></tr></thead><tbody><tr><td>&#31616;&#21333;&#23646;&#24615;</td><td><tt class="literal">{[aliasname].[propertyname]</tt></td><td><tt class="literal">A_NAME as {item.name}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#22797;&#21512;&#23646;&#24615;</td><td><tt class="literal">{[aliasname].[componentname].[propertyname]}</tt></td><td><tt class="literal">CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#23454;&#20307;&#36776;&#21035;&#22120;(Discriminator of an entity)</td><td><tt class="literal">{[aliasname].class}</tt></td><td><tt class="literal">DISC as {item.class}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#23454;&#20307;&#30340;&#25152;&#26377;&#23646;&#24615;</td><td><tt class="literal">{[aliasname].*}</tt></td><td><tt class="literal">{item.*}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#38598;&#21512;&#38190;(collection key)</td><td><tt class="literal">{[aliasname].key}</tt></td><td><tt class="literal">ORGID as {coll.key}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#38598;&#21512;id</td><td><tt class="literal">{[aliasname].id}</tt></td><td><tt class="literal">EMPID as {coll.id}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#38598;&#21512;&#20803;&#32032;</td><td><tt class="literal">{[aliasname].element}</tt></td><td><tt class="literal">XID as {coll.element}</tt></td><td>&nbsp;</td></tr><tr><td>&#38598;&#21512;&#20803;&#32032;&#30340;&#23646;&#24615;</td><td><tt class="literal">{[aliasname].element.[propertyname]}</tt></td><td><tt class="literal">NAME as {coll.element.name}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#38598;&#21512;&#20803;&#32032;&#30340;&#25152;&#26377;&#23646;&#24615;</td><td><tt class="literal">{[aliasname].element.*}</tt></td><td><tt class="literal">{coll.element.*}</tt></td><td class="auto-generated">&nbsp;</td></tr><tr><td>&#38598;&#21512;&#30340;&#25152;&#26377;&#23646;&#24615;</td><td><tt class="literal">{[aliasname].*}</tt></td><td><tt class="literal">{coll.*}</tt></td><td class="auto-generated">&nbsp;</td></tr></tbody></table></div></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="querysql-namedqueries"></a>16.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="persons"&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 :namePattern&lt;/sql-query&gt;</pre><pre class="programlisting">List people = sess.getNamedQuery("persons")    .setString("namePattern", namePattern)    .setMaxResults(50)    .list();</pre><p><tt class="literal">&lt;return-join&gt;</tt>&#21644;    <tt class="literal">&lt;load-collection&gt;</tt> &#20803;&#32032;&#26159;&#29992;&#26469;&#36830;&#25509;&#20851;&#32852;&#20197;&#21450;&#23558;&#26597;&#35810;&#23450;&#20041;&#20026;&#39044;&#20808;&#21021;&#22987;&#21270;&#21508;&#20010;&#38598;&#21512;&#30340;&#12290;</p><pre class="programlisting">&lt;sql-query name="personsWith"&gt;    &lt;return alias="person" class="eg.Person"/&gt;    &lt;return-join alias="address" property="person.mailingAddress"/&gt;    SELECT person.NAME AS {person.name},           person.AGE AS {person.age},           person.SEX AS {person.sex},           adddress.STREET AS {address.street},           adddress.CITY AS {address.city},           adddress.STATE AS {address.state},           adddress.ZIP AS {address.zip}    FROM PERSON person    JOIN ADDRESS adddress        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'    WHERE person.NAME LIKE :namePattern&lt;/sql-query&gt;</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>    &#20320;&#21487;&#20197;&#25226;&#32467;&#26524;&#38598;&#26144;&#23556;&#30340;&#20449;&#24687;&#25918;&#22312;&#22806;&#37096;&#30340;<tt class="literal">&lt;resultset&gt;</tt>&#20803;&#32032;&#20013;&#65292;&#36825;&#26679;&#23601;&#21487;&#20197;&#22312;&#22810;&#20010;&#21629;&#21517;&#26597;&#35810;&#38388;&#65292;&#25110;&#32773;&#36890;&#36807;<tt class="literal">setResultSetMapping()</tt>API&#26469;&#35775;&#38382;&#12290;(&#27492;&#22788;&#21407;&#25991;&#21363;&#23384;&#30097;&#12290;&#21407;&#25991;&#20026;&#65306;You can externalize the resultset mapping informations in a    <tt class="literal">&lt;resultset&gt;</tt> element to either reuse them accross    several named queries or through the    <tt class="literal">setResultSetMapping()</tt> API.)    </p><pre class="programlisting">&lt;resultset name="personAddress"&gt;

⌨️ 快捷键说明

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