mybatis学习之路----bind的简单使用

来源:互联网 发布:三剑客软件下载 编辑:程序博客网 时间:2024/06/16 07:06

点滴记载,点滴进步,愿自己更上一层楼。

mybatis的bind元素可以执行一个表达式,创建一个变量。

可以用于模糊查询。

可以给特定参数加些特殊的业务前缀等等。

其实就是执行传入对象中的某个方法,进行特殊的业务处理。当然get set方法也是方法。

 <select id="selectUseIf" parameterType="com.soft.test.model.DynamicTestModel" resultMap="userMap">        <if test="username != null and username neq ''">            <bind name="pattern" value="'%' + _parameter.getUsername() + '%'" />        </if>        select * from t_user        <where>            <if test="username != null and username neq ''">                username like #{pattern}            </if>        </where>    </select>


两个属性  name  创建的变量名称,

  value 创建变量的值,包含可执行的表达式,执行一些特殊的操作。

其中的_parameter固定,代表的是传入对象,.getUsername() 传入对象中方法,

如果调用的是对象中的对象的某个方法,_parameter.getDynamicTest1Model().getString()

getDynamicTest1Model 对象中的get方法 获取对象,getString()对象中的对象中的方法。

需要注意:确保被调用的属性已经实例化了,否则会空指针异常。

      加一层if判断最适合。

测试方法

private DynamicSqlDao dynamicSqlDao;    @Test    public void dynamic() throws Exception {        dynamicSqlDao = new DynamicSqlDaoImpl();        DynamicTestModel user = new DynamicTestModel();        user.setUsername("xiao");        List<User> userList = dynamicSqlDao.dynamic(user);        System.out.println(userList);    }
测试结果:

DEBUG [main] - ==>  Preparing: select * from t_user WHERE username like ? 
DEBUG [main] - ==> Parameters: %xiao%(String)


上面说过bind里面的vlaue属性,可以执行的是一个对象的方法,对象必须实例化。下面演示一个自己的随便写的方法,通过bind调用

在model里面定义下面的方法,并在xml的bind里面使用。

    public String handleUsername(){        String username = this.username;        return "%" + username + "%";    }
    <select id="selectUseIf" parameterType="com.soft.test.model.DynamicTestModel" resultMap="userMap">        <if test="username != null and username neq ''">            <bind name="pattern" value=" _parameter.handleUsername() " />        </if>        select * from t_user        <where>            <if test="username != null and username neq ''">                username like #{pattern}            </if>        </where>    </select>
测试结果:
DEBUG [main] - ==>  Preparing: select * from t_user WHERE username like ? 
DEBUG [main] - ==> Parameters: %xiaohon%(String)

也是可以执行的。

注意点就是可执行的方法的对象必须实例化,否则空指针。


原创粉丝点击