Mybatis:在sqlBuilder中动态的生成sql语句

最近项目当中使用到MyBatis 动态语句生成的功能,我使用的是sqlBuilder,话不多说,直接上代码,StockMarketProvider.java:

public String selectByStockIdSql(){

        BEGIN();

        SELECT("*");

        FROM(TABLE_NAME);

        WHERE("stock_id = #{0}");

        return SQL();

    }

    

    public String updateByStockIdSql(){

        BEGIN();

        UPDATE(TABLE_NAME);

        SET("jkp=#{jkp}");

        SET("zsp=#{zsp}");

        SET("zgj=#{zgj}");

        SET("zdj=#{zdj}");

        SET("ztj=#{ztj}");

        SET("dtj=#{dtj}");

        SET("hsl=#{hsl}");

        SET("zf=#{zf}");

        SET("syl=#{syl}");

        SET("sjl=#{sjl}");

        SET("cjl=#{cjl}");

        SET("cje=#{cje}");

        SET("zsz=#{zsz}");

        SET("ltsz=#{ltsz}");

        SET("mr1=#{mr1}");

        SET("mr2=#{mr2}");

        SET("mr3=#{mr3}");

        SET("mr4=#{mr4}");

        SET("mr5=#{mr5}");

        SET("mc1=#{mc1}");

        SET("mc2=#{mc2}");

        SET("mc3=#{mc3}");

        SET("mc4=#{mc4}");

        SET("mc5=#{mc5}");

        SET("mr1_num=#{mr1Num}");

        SET("mr2_num=#{mr2Num}");

        SET("mr3_num=#{mr3Num}");

        SET("mr4_num=#{mr4Num}");

        SET("mr5_num=#{mr5Num}");

        SET("mc1_num=#{mc1Num}");

        SET("mc2_num=#{mc2Num}");

        SET("mc3_num=#{mc3Num}");

        SET("mc4_num=#{mc4Num}");

        SET("mc5_num=#{mc5Num}");

        SET("status=#{status}");

        SET("dqj=#{dqj}");

        SET("bhz=#{bhz}");

        SET("bhl=#{bhl}");

        WHERE("stock_id=#{stockId}");

        return SQL();

    }

    //SELECT * FROM market AS a WHERE a.stock_id IN (SELECT id FROM stock AS b WHERE b.`type`=1) 

    //AND a.`status`=0 ORDER BY bhl DESC LIMIT 10;

    public String selectByOrderAtLimitSql(Map<String,Object> params){

        String orderby = (String)params.get("orderby");//使用Params注解,当中的名称作为key        BEGIN();

        SELECT("*");

        FROM(TABLE_NAME+" AS a");

        WHERE("a.stock_id IN (SELECT id FROM stock AS b WHERE b.type=1) and a.status=0");

        String order="DESC";

        if("bhl".equals(orderby)){

            order="DESC";

          ORDER_BY("bhl");

        }else if("hsl".equals(orderby)){

            order="ASC";

            ORDER_BY("hsl");

        }else if("zf".equals(orderby)){

            order="DESC";

            ORDER_BY("zf");

        }

        return SQL()+" "+order+" limit #{limit}";

    }

    

    public String selectDiefuListSql(){

        BEGIN();

        SELECT("*");

        FROM(TABLE_NAME+" AS a");

        WHERE("a.stock_id IN (SELECT id FROM stock AS b WHERE b.type=1) AND a.status=0 AND a.bhl<0 ");

        ORDER_BY("a.bhl");

        return SQL()+" limit #{0}";//我还没有查到怎样使用limit所以干脆直接加到后面了

    }

对应的StockMarketMapper.java 文件:

package com.oliver.mapper.inter;



import java.util.List;



import org.apache.ibatis.annotations.InsertProvider;

import org.apache.ibatis.annotations.Param;

import org.apache.ibatis.annotations.Results;

import org.apache.ibatis.annotations.Result;

import org.apache.ibatis.annotations.SelectKey;

import org.apache.ibatis.annotations.SelectProvider;

import org.apache.ibatis.annotations.UpdateProvider;



import com.oliver.db.sql.StockMarketProvider;

import com.oliver.models.StockMarket;



public interface IStockMarketMapper {

    

    @InsertProvider(type=StockMarketProvider.class,method="insertStockMarketSql")

    @SelectKey(keyProperty="id",keyColumn="id", before = false, resultType = int.class, statement = { "SELECT LAST_INSERT_ID() AS ID" })

    public void insertStockMarket(StockMarket stockMarket);

    

    @SelectProvider(type=StockMarketProvider.class,method="selectByStockIdSql")

    @Results(value={

            @Result(id=true,property="id",column="id"),

            @Result(property="dqj",column="dqj"),

            @Result(property="bhz",column="bhz"),

            @Result(property="bhl",column="bhl"),

            @Result(property="jkp",column="jkp"),

            @Result(property="zsp",column="zsp"),

            @Result(property="zgj",column="zgj"),

            @Result(property="zdj",column="zdj"),

            @Result(property="ztj",column="ztj"),

            @Result(property="dtj",column="dtj"),

            @Result(property="hsl",column="hsl"),

            @Result(property="zf",column="zf"),

            @Result(property="syl",column="syl"),

            @Result(property="sjl",column="sjl"),

            @Result(property="cjl",column="cjl"),

            @Result(property="cje",column="cje"),

            @Result(property="zsz",column="zsz"),

            @Result(property="ltsz",column="ltsz"),

            @Result(property="mr1",column="mr1"),

            @Result(property="mr2",column="mr2"),

            @Result(property="mr3",column="mr3"),

            @Result(property="mr4",column="mr4"),

            @Result(property="mr5",column="mr5"),

            @Result(property="mc1",column="mc1"),

            @Result(property="mc2",column="mc2"),

            @Result(property="mc3",column="mc3"),

            @Result(property="mc4",column="mc4"),

            @Result(property="mc5",column="mc5"),

            @Result(property="mr1Num",column="mr1_num"),

            @Result(property="mr2Num",column="mr2_num"),

            @Result(property="mr3Num",column="mr3_num"),

            @Result(property="mr4Num",column="mr4_num"),

            @Result(property="mr5Num",column="mr5_num"),

            @Result(property="mc1Num",column="mc1_num"),

            @Result(property="mc2Num",column="mc2_num"),

            @Result(property="mc3Num",column="mc3_num"),

            @Result(property="mc4Num",column="mc4_num"),

            @Result(property="mc5Num",column="mc5_num"),

            @Result(property="status",column="status"),

            @Result(property="stockId",column="stock_id")

    })

    public StockMarket selectByStockId(int stockId);

    

    @UpdateProvider(type=StockMarketProvider.class,method="updateByStockIdSql")

    public void update(StockMarket stockMarket);



    @SelectProvider(type=StockMarketProvider.class,method="selectByOrderAtLimitSql")

    @Results(value={

            @Result(id=true,property="id",column="id"),

            @Result(property="dqj",column="dqj"),

            @Result(property="bhz",column="bhz"),

            @Result(property="bhl",column="bhl"),

            @Result(property="jkp",column="jkp"),

            @Result(property="zsp",column="zsp"),

            @Result(property="zgj",column="zgj"),

            @Result(property="zdj",column="zdj"),

            @Result(property="ztj",column="ztj"),

            @Result(property="dtj",column="dtj"),

            @Result(property="hsl",column="hsl"),

            @Result(property="zf",column="zf"),

            @Result(property="syl",column="syl"),

            @Result(property="sjl",column="sjl"),

            @Result(property="cjl",column="cjl"),

            @Result(property="cje",column="cje"),

            @Result(property="zsz",column="zsz"),

            @Result(property="ltsz",column="ltsz"),

            @Result(property="mr1",column="mr1"),

            @Result(property="mr2",column="mr2"),

            @Result(property="mr3",column="mr3"),

            @Result(property="mr4",column="mr4"),

            @Result(property="mr5",column="mr5"),

            @Result(property="mc1",column="mc1"),

            @Result(property="mc2",column="mc2"),

            @Result(property="mc3",column="mc3"),

            @Result(property="mc4",column="mc4"),

            @Result(property="mc5",column="mc5"),

            @Result(property="mr1Num",column="mr1_num"),

            @Result(property="mr2Num",column="mr2_num"),

            @Result(property="mr3Num",column="mr3_num"),

            @Result(property="mr4Num",column="mr4_num"),

            @Result(property="mr5Num",column="mr5_num"),

            @Result(property="mc1Num",column="mc1_num"),

            @Result(property="mc2Num",column="mc2_num"),

            @Result(property="mc3Num",column="mc3_num"),

            @Result(property="mc4Num",column="mc4_num"),

            @Result(property="mc5Num",column="mc5_num"),

            @Result(property="status",column="status"),

            @Result(property="stockId",column="stock_id")

    })

    public List<StockMarket> selectByOrderAtLimit(@Param("orderby")String orderBy, @Param("limit")int limit);



    @SelectProvider(type=StockMarketProvider.class,method="selectDiefuListSql")

       @Results(value={

               @Result(id=true,property="id",column="id"),

               @Result(property="dqj",column="dqj"),

               @Result(property="bhz",column="bhz"),

               @Result(property="bhl",column="bhl"),

               @Result(property="jkp",column="jkp"),

               @Result(property="zsp",column="zsp"),

               @Result(property="zgj",column="zgj"),

               @Result(property="zdj",column="zdj"),

               @Result(property="ztj",column="ztj"),

               @Result(property="dtj",column="dtj"),

               @Result(property="hsl",column="hsl"),

               @Result(property="zf",column="zf"),

               @Result(property="syl",column="syl"),

               @Result(property="sjl",column="sjl"),

               @Result(property="cjl",column="cjl"),

               @Result(property="cje",column="cje"),

               @Result(property="zsz",column="zsz"),

               @Result(property="ltsz",column="ltsz"),

               @Result(property="mr1",column="mr1"),

               @Result(property="mr2",column="mr2"),

               @Result(property="mr3",column="mr3"),

               @Result(property="mr4",column="mr4"),

               @Result(property="mr5",column="mr5"),

               @Result(property="mc1",column="mc1"),

               @Result(property="mc2",column="mc2"),

               @Result(property="mc3",column="mc3"),

               @Result(property="mc4",column="mc4"),

               @Result(property="mc5",column="mc5"),

               @Result(property="mr1Num",column="mr1_num"),

               @Result(property="mr2Num",column="mr2_num"),

               @Result(property="mr3Num",column="mr3_num"),

               @Result(property="mr4Num",column="mr4_num"),

               @Result(property="mr5Num",column="mr5_num"),

               @Result(property="mc1Num",column="mc1_num"),

               @Result(property="mc2Num",column="mc2_num"),

               @Result(property="mc3Num",column="mc3_num"),

               @Result(property="mc4Num",column="mc4_num"),

               @Result(property="mc5Num",column="mc5_num"),

               @Result(property="status",column="status"),

               @Result(property="stockId",column="stock_id")

       })

    public List<StockMarket> selectDiefuList(int limit);

}

 

你可能感兴趣的:(mybatis)