ibatis中写SQL语句的优势

一个ibatis生成JAVA相关配置文件的工具,非常好用,
地址:http://www.ibatis3.com/
会自动生成dao,xml,以及相应的service文件

对于多表查询,可以在相应的结果的XML里面查询,

如下面的SQL语句,查询的是PS_ARTIST表的信息,但是后面有相应的判断,如果用IBATIS自身的查询的话,会写多次嵌套,这样写就很容易实现查询了!

  <select id="selectSearchbyNameAndPage" resultMap="BaseResultMap" parameterType="java.util.Map" >
select g.art_id as ART_ID, g.art_12530id as ART_12530ID,g.art_name as ART_NAME,g.art_ename as ART_ENAME,
    g.art_simple_py as ART_SIMPLE_PY,g.art_sex as ART_SEX,g.art_area as ART_AREA, g.art_birthday as ART_BIRTHDAY,g.art_infor as ART_INFOR,
    g.art_intro  as ART_INTRO,g.art_tblog  as ART_TBLOG,g.art_pic_path as ART_PIC_PATH,g.art_album_count as ART_ALBUM_COUNT,
    g.art_track_count as ART_TRACK_COUNT,g.art_hot as ART_HOT,g.art_time as ART_TIME,g.art_tblog_type as ART_TBLOG_TYPE
    from PHONECLIENT_V.PS_ARTIST g where g.art_id not in(select f.fav_cid from PHONECLIENT_V.PS_USER_FAV f where f.fav_uid=#{mobile} and  f.fav_state=1 )
    and(g.art_name like #{singername} or g.art_simple_py like #{singername} or g.art_ename like #{singername})

超级强的语句,完成推荐歌手的列表
1、用户未关注的
2、系统推荐的顺序排序
3、未推荐的按时间

select aa.art_id as ART_ID, aa.art_12530id as ART_12530ID,aa.art_name as ART_NAME,aa.art_ename as ART_ENAME,
    aa.art_simple_py as ART_SIMPLE_PY,aa.art_sex as ART_SEX,aa.art_area as ART_AREA, aa.art_birthday as ART_BIRTHDAY,aa.art_infor as ART_INFOR,
    aa.art_intro  as ART_INTRO,aa.art_tblog  as ART_TBLOG,aa.art_pic_path as ART_PIC_PATH,aa.art_album_count as ART_ALBUM_COUNT,
    aa.art_track_count as ART_TRACK_COUNT,aa.art_hot as ART_HOT,aa.art_time as ART_TIME,aa.art_tblog_type as ART_TBLOG_TYPE from (
    select g.art_id as ART_ID, g.art_12530id as ART_12530ID,g.art_name as ART_NAME,g.art_ename as ART_ENAME,
    g.art_simple_py as ART_SIMPLE_PY,g.art_sex as ART_SEX,g.art_area as ART_AREA, g.art_birthday as ART_BIRTHDAY,g.art_infor as ART_INFOR,
    g.art_intro  as ART_INTRO,g.art_tblog  as ART_TBLOG,g.art_pic_path as ART_PIC_PATH,g.art_album_count as ART_ALBUM_COUNT,
    g.art_track_count as ART_TRACK_COUNT,g.art_hot as ART_HOT,g.art_time as ART_TIME,g.art_tblog_type as ART_TBLOG_TYPE,
    NVL(g1.hc_sequence,0) as hc_sequence
    from PHONECLIENT_V.PS_ARTIST g
    left join (select h.hc_cid as hc_cid , h.hc_sequence as hc_sequence from PHONECLIENT_V.PS_HOT h where h.hc_type = 1) g1
    on g.art_id=g1.hc_cid
    where g.art_id not in(select f.fav_cid from PHONECLIENT_V.PS_USER_FAV f where f.fav_uid=#{mobile} and  f.fav_state=1 )
    order by g1.hc_sequence) aa order by aa.hc_sequence desc ,aa.ART_ID
  </select>

猜你喜欢

转载自wpsing.iteye.com/blog/1537184