现有数据库user表和role表,我们想通过对用户名得模糊查询出对应记录并使用mybatis的分页技术
数据库的表如下
Mapper接口如下
public interface UserMapper {
public List<User> queryByLimit(@Param("userName") String userName,
@Param("start") Integer start,
@Param("count") Integer count);
}
XML映射文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openlab.mapper.UserMapper">
<select id="queryByLimit" resultType="User">
SELECT
u.id,u.username,u.password,
r.roleName
FROM
user u LEFT JOIN role r
ON u.roleId= r.roleId
WHERE u.username LIKE concat('%',#{userName},'%')
limit #{start},#{count}
</select>
</mapper>
测试类如下
@org.junit.Test
public void testLimit() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.queryByLimit("i", 0, 2);
for (User user : users) {
System.out.println(user.getUsername()+"\t"+user.getPassword()+"\t"+user.getRoleName());
}
}
测试结果如下