MyBatis bind标签起什么作用呢?
bind标签的功能
是一个拼接函数,其功能类似于MySQL中的concat函数,Oracle中的"||"符号等例: 使用bind函数帮忙一个name的模糊查询操作
<select id="selectUserInfo" resultType="com.java265.po.UserInfo">
<bind name="pattern" value="'%'+_parameter+'%'" />
SELECT id,name,notes
FROM UserInfo
WHERE name like #{pattern}
</select>
“_parameter”代表传递进来的参数
它和通配符连接后,赋值给pattern
再结合select语句中使用这个变量进行模糊查询
bind元素的属性说明:
value:对应传入实体类的某个字段,可以进行字符串拼接等特殊处理。
name:给对应参数取的别名。
例 UserInfoMapper 类中方法
public list<UserInfo> selectUserInfo(UserInfo userInfo);SQL 映射文件代码
<select id="selectUserInfo" resultType="com.java265.po.UserInfo">
<bind name="pattern_name" value="'%'+name+'%'" />
<bind name="pattern_notes" value="'%'+notes+'%'" />
SELECT id,name,notes
FROM UserInfo
WHERE name like #{pattern_name}
AND notes like #{pattern_notes}
</select>
测试代码
public class Test {
public static void main(String[] args) throws IOException {
// 读取配置文件mybatis-config.xml
InputStream config = Resources.getResourceAsStream("mybatis-config.xml"); // 根据配置文件构建
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
// 通过SqlSessionFactory创建SqlSession
SqlSession ss = ssf.openSession();
UserInfo userInfo = new UserInfo();
userInfo.setname("王二");
userInfo.setNotes("喜喜");
List<UserInfo> userList = ss.selectList("com.java265.mapper.UserInfoMapper.selectUserInfo", userInfo);
for (UserInfo t : userList) {
System.out.println(t);
}
}
}
运行结果---DEBUG [main] - ==> Preparing: SELECT id,name,notes FROM UserInfo WHERE name like ? AND notes like ?
DEBUG [main] - ==> Parameters: %王二%(String), %喜喜%(String)
DEBUG [main] - <== Total: 1
UserInfo[id=1,name=王二,notes=喜喜]
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


