根据用户名,模糊查找用户列表
实现方式1: #{}
配置文件:
<!-- namespace:命名空间,用于隔离sql语句 -->
<mapper namespace="user">
<!-- #{}:占位符,相当于jdbc的?
resultType:如果返回的结果为集合,只需设置每一个的数据类型,取数用selectList,会自动封装成list
-->
<select id="getUserByName" parameterType="String" resultType="com.heima.domain.User">
select * from users where username like #{name}
</select>
</mapper>
SqlSessionFactory工具类:
public class MybatisUtils {
private static SqlSessionFactory factory = null;
static{
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
factory = ssfb.build(MybatisUtils.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
}
public static SqlSessionFactory getFactory(){
return factory;
}
}
测试类:
@Test
public void test2(){
SqlSessionFactory factory = MybatisUtils.getFactory();
SqlSession sqlSession = factory.openSession();
List<User> list = sqlSession.selectList("user.getUserByName", "%张%");
for(User user: list){
System.out.println(user);
}
sqlSession.close();
}
实现方式2:${}
配置文件:
<!-- ${}:字符串拼接指令,如果入参为普通数据类型,{}内部只能写value,否则会报错
-->
<select id="getUserByName" parameterType="String" resultType="com.heima.domain.User">
select * from users where username like '%${value1}%'
</select>
代码:
@Test
public void test2(){
SqlSessionFactory factory = MybatisUtils.getFactory();
SqlSession sqlSession = factory.openSession();
List<User> list = sqlSession.selectList("user.getUserByName", "张");
for(User user: list){
System.out.println(user);
}
sqlSession.close();
}