mybatis的五种模糊查询以及参数说明
一、更改参数
<mapper namespace="com.gx.mapper.UserMapper">
<!-- 查询所有 -->
<select id="selectLike" resultType="User">
select * from user where name like #{name} </select>
</mapper>
测试
/**更改参数 * select * from user where name like #{name} */ @Test public void selectLike01() { User user =new User(); user.setName("%云6%"); List<User> list = userMapper.selectLike(user); for (User user2 : list) { System.out.println(user2); } }
二、使用%%拼接,推荐使用
<mapper namespace="com.gx.mapper.UserMapper">
<!-- 查询所有 -->
<select id="selectLike" resultType="User">
select * from user where name like "%"#{name}"%"</select>
</mapper>
测试
/**使用%%拼接
* 推荐使用
* select * from user where name like "%"#{name}"%"
*/
@Test
public void selectLike02() {
User user =new User();
user.setName("云6");
List<User> list = userMapper.selectLike(user);
for (User user2 : list) {
System.out.println(user2);
}
}
三、使用$拼接
<mapper namespace="com.gx.mapper.UserMapper">
<!-- 查询所有 -->
<select id="selectLike" resultType="User">
select * from user where name like "%${name}%"
</select>
</mapper>
测试
/**使用$拼接
* select * from user where name like "%${name}%"
*/
@Test
public void selectLike03() {
User user =new User();
user.setName("云6");
List<User> list = userMapper.selectLike(user);
for (User user2 : list) {
System.out.println(user2);
}
}
四、使用CONCAT函数,但是数据库切换就麻烦
<mapper namespace="com.gx.mapper.UserMapper">
<!-- 查询所有 -->
<select id="selectLike" resultType="User">
select * from user where name like CONCAT("$",#{name},"%")
</select>
</mapper>
测试
/**使用CONCAT函数,但是数据库切换就麻烦
* select * from user where name like CONCAT("%",#{name},"%")
*/
@Test
public void selectLike04() {
User user =new User();
user.setName("云6");
List<User> list = userMapper.selectLike(user);
for (User user2 : list) {
System.out.println(user2);
}
}
五、更改别名,bind绑定
<mapper namespace="com.gx.mapper.UserMapper">
<!-- 查询所有 -->
<select id="selectLike" resultType="User">
<bind name="keywords" value="'%'+name+'%'">
select * from user where name like #{keywords}
</select>
</mapper>
测试
/**更改别名,bind绑定
* <bind name="keywords" value="'%'+name+'%'"/>
*select * from user where name like #{keywords}
*/
@Test
public void selectLike05() {
User user =new User();
user.setName("云6");
List<User> list = userMapper.selectLike(user);
for (User user2 : list) {
System.out.println(user2);
}
}
六、参数说明
如果Mapper里面的方法的参数是多个参数是,可以使用以下的写法:
public interface UserMapper {
public void add(String name,String address,Date birthday);
}
修改mapping.xml
<mapper namespace="com.gx.mapper.UserMapper">
<!-- 添加 -->
<!-- id对应接口里面的方法名,不能重复 -->
<!-- parameterType:参数类型 -->
<!--<parameterMap type="com.gx.domain.User" id="myuser"> <parameter property="name"
javaType="java.lang.String"/> <parameter property="address" javaType="java.lang.String"/>
<parameter property="birthday" javaType="java.lang.String"/> </parameterMap> -->
<!-- parameterMap:定义参数的map类型 方法里面的传参必须是map,要在mapper里面创建一个id=myuser的节点 -->
<!-- userGeneratedKeys="true" 是否使用自动增长,默认为true -->
<!-- parameterType和parameterMap只能存在一个 -->
<insert id="add" >
<!-- 在mybatis3.3及其以下的版本可以使用#{num}去取对应下表的形式参数的值 -->
<!-- insert into
user(name,address,birthday) values(#{0},#{1},#{2}) -->
<!-- 在mybatis3.4及其以上的版本不能使用#{num}去取对应下表的形式参数的值 -->
insert into
user(name,address,birthday) values(#{param1},#{param2},#{param3})
</insert>
</mapper>
测试
public class Test {
public static void main(String[] args) {
SqlSession session = MyBatisUtils.openSession();
//得到UserMapper的代理对象
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.add("赵云"+101, "常山"+101, new Date());
System.out.println("添加成功");
MyBatisUtils.closeSession(session);
}
}

浙公网安备 33010602011771号