一、mybatis 表示式簡介
對於mybatis3 ,提供了一種動態sql的方式。通過動態sql我們可以直接在mybatis 的xm對映檔案中直接通過條件判斷的方式進行查詢新增的拼接。mybatis 專案位址為 。mybatis 3 提供如下條件判斷:
if語句如下:
<select
id="findactiveblogwithtitlelike"
resulttype
="blog"
>
select * from blog
where state = 『active』
<
if test
="title != null"
>
and title like #
if>
select
>
choose語句如下:
<select
id="findactivebloglike"
resulttype
="blog"
>
select * from blog where state = 『active』
<
choose
>
<
when
test
="title != null"
>
and title like #
when
>
<
when
test
="author != null and author.name != null"
>
and author_name like #
when
>
<
otherwise
>
and featured = 1
otherwise
>
choose
>
select
>
foreach語句如下
<select
id="selectpostin"
resulttype
="domain.blog.post"
>
select *
from post p
where id in
<
foreach
item
="item"
index
="index"
collection
="list"
open
="("
separator
=","
close
=")"
>#
foreach
>
select
>
二、相關技巧
對於變數可以使用# 方式進行拼接。mybatis 也支援$ 的方式。這兩種方式的區別如下:
# 表示讀取param引數的值,並將該值做字段的的值進行比較;
$ 表示讀取param的值,並將param值當成資料庫表中的某個字段。
在資料量大的時候,我們會使用維度表。將統計結果定期統計到維度表,展示的時候,直接讀取維度表的資料。
維度表結構如下:
droptable
ifexists
`wd`;
create
table
`wd` (
`id`
varchar(64) not
null
, `xl`
varchar(2) not
null
, `xzqh`
varchar(2) not
null
, `nld`
varchar(2) not
null
, `total`
int(11) not
null,
primary
key(`id`)
) engine
=innodb default charset=utf8;
統計的時候,需要根據xl(學歷),xzqh(行政區劃),nld(年齡段)進行分組查詢。sql如下:
select $, sum(total)
from
wdgroup
by $
parm 傳的值可以是 「xl」、「xzqh」,「nld」 這樣通過乙個sql就可完成這個功能。只需要傳遞不同的引數,從而完成對不同欄位的分組統計。這中凡是在使用圖表的時候進行分組統計,可以用的到。
動態LINQ(Lambda表示式)
1.準備資料實體 public class data public int count 建立測試資料 public static listgettestdata data account1 new data data account2 new data data account3 new data ...
SQL連線表示式
為驗證不同連線表示式的區別,先建立下面的表 1 inner join 對錶a和表b取笛卡爾積 內連線,inner可以省略 select students.teacher name,course id from students join teachers 結果如下 2 natural inner j...
Mybatis常用的OGNL表示式
1 e1 or e2 或 2 e1 and e2 且 3 e1 e2 或e1 eq e2 相等 4 e1 e2 或 e1 neq e2 不等 5 e1 lt e2 小於 6 e1 lte e2 小於等於 7 e1 gt e2 大於 8 e1 gte e2 大於等於 9 e1 e2 加 e1 e2 減...