<small id='GfiFdOn'></small> <noframes id='p4KVLMX'>

  • <tfoot id='Hvmshl2'></tfoot>

      <legend id='4AXbv'><style id='YTLmMGJkIe'><dir id='HDRK0LnaT'><q id='Ga5Vkz4'></q></dir></style></legend>
      <i id='J64tjE'><tr id='LvNhk'><dt id='ilCxL2n4'><q id='4E7taI'><span id='umQM'><b id='hIA9r'><form id='COHFbQSI'><ins id='qyHBJPW0'></ins><ul id='sKyiof7'></ul><sub id='DrZqth0yF'></sub></form><legend id='qAMgcJsToj'></legend><bdo id='KaoxOgBm'><pre id='KSZ107ltB'><center id='C1dugOK'></center></pre></bdo></b><th id='1Ckh6eF'></th></span></q></dt></tr></i><div id='pl1Bfe'><tfoot id='r7cD'></tfoot><dl id='nxXG'><fieldset id='7X0Y1HQJF9'></fieldset></dl></div>

          <bdo id='5sIP8'></bdo><ul id='JWcmgrnZ'></ul>

          1. <li id='YGSZxXhm5'></li>
            登陆

            mybatis运用注解代替xml装备,动态生成Sql

            admin 2019-09-06 144人围观 ,发现0个评论

            mybatis运mybatis运用注解代替xml装备,动态生成Sql用注解代替xml装备时,遇到判别条件是否为null或许为空时,@Select很难搞定,不知道怎么办?

            mybatis3中增加了运用注解来装备Mapper的新特性,运用 SelectProvider来动态生成sql。

            典型的运用场景

            1. 无参数@SelectProvide办法

            在Mapper接口办法上和@SelectProvide指定类办法上,均无参数:

            UserMapper.java:

             @SelectProvider(type = SqlProvider.clas高铁商务座s, method = "selectAllUsmybatis运用注解代替xml装备,动态生成Sqler")
            @ResultMap("userMap")
            public List getAllUser();

            SqlProvider.java:

             public String selectAllUser() {
            return "select * from user";
            }

            2.单个参数运用@SelectProvider

            2.1.没有@Param注解的单个参数运用@SelectProvider

            @SelectProvider是声明在办法基本上的,这个办法界说在Mapper对应的的interface上。

             public interface UserMapper {
            @SelectProvider(type = SqlProvider.class, method = "selectUser")
            @ResultMap("userMap")
            public User getUser(long userId);
            }

            上例中是个很简单的Mapper接口,其间界说了一个办法:getUser,这个办法依据供给的用户id来查询用户信息,并回来一个User实体bean。

            这是一个很简单很常用的查询场景:依据key来查询记载并将成果封装成实体bean。其间:

            @SelectProvider注解用于生成查询用的sql句子,有别于@Select注解,@SelectProvide指定一个Class及其办法,而且经过调用Class上的这个办法来取得sql句子。在咱们这个比如中,获取查询sql的办法是SqlProvider.selectUser。

            @ResultMap注解用于从查询成果集RecordSet中取数据然后组装实体bean。

            @SelectProvide中type参数指定的Class类,有必要要能够经过无参的结构函数来初始化。

            @SelectProvide中method参数指定的办法,有必要是public的,回来值有必要为String,可认为static。

             public class SqlProvider {
            public String selectUser(long userId) {
            return "select * from user where userId=" + userId;
            }
            }

            2.2.带有@Param注解一个参数的@SelectProvide办法

            关于只要一个参数的状况,能够直接运用,拜见前面的getUser和selectUser。

            可是,假如在getUser办法中,对userId办法运用了@Param注解的话,那么相应selectUser办法有必要承受Map做为参数:

            UserMapper.java:

             @SelectProvider(type = SqlProvider.class, method = "selectUser2")
            @ResultMap("userMap")
            public User getUser2(@Param("userId") long userId);

            SqlProvider.java:

             public String selectUser2(Map para) {
            return "select * from user where userId=" + para.get("userId");
            }

            3.多参数的@SelectProvide办法

            在超越一个参数的状况下,@SelectProvide办法有必要承受Map做为参数,

            假如参数运用了@Param注解,那么参数在Map中以@Param的值为key,如下例中的userId;

            假如参数没有运用@Param注解,那么参数在Map中以参数的次序为key,如下例中的password:

            UserMapper.java:

             @SelectProvider(type = SqlProvider.class, method = "selectUserCheck")
            @ResultMap("userMap")
            public User getUserCheck(@Param("userId") long userId, String password);

            SqlProvider.java:

             public String selectUserCheck(Map para) {
            return "select * from user where userId=" + para.get(mybatis运用注解代替xml装备,动态生成Sql"userId") + " and password='" + para.get("1") + "'";
            }

            4.一些约束

            在Mapper接口和@SelectProvide办法类中,不要运用重载,也就是说,不要运用办法名相同参数不同的办法,以防止发作怪异问题。

            参考文献:

            【1】http://www.blogjava.net/dbstar/archive/2011/08/08/355825.html

          2. 南风股份11月21日盘中涨幅达5%
          3. 章鱼彩票安卓-远光软件11月21日盘中涨幅达5%
          4. 章鱼彩票安卓-丰元股份11月21日盘中跌幅达5%
          5. 请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP