分页
分页是为了减少数据处理量。
Limit实现分页
语法:
select * from user limit startIndex,pageSize
使用Mybatis实现分页:
1.接口
List<User> getUserByLimit(Map<String,Integer> map);
2.UserMapper.xml
<select id="getUserByLimit" parameterType="map" resultType="com.skdjq.pojo.User">
select * from mybatis.user limit #{startIndex},#{pageSize};
</select>
3.测试
@Test
public void getUserByLimit(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("startIndex",0);
map.put("pageSize",1);
List<User> userByLimit = mapper.getUserByLimit(map);
for(User user:userByLimit){
System.out.println(user);
}
}
使用注解开发
1.注解在接口上实现
public interface UserDao {
@Select("select * from mybatis.user")
List<User> getUserList();
}
2.需要在核心配置文件中绑定接口:
<mappers>
<mapper class="com.skdjq.Dao.UserDao"/>
</mappers>
3.测试:
@Test
//查
public void test(){
//获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//getMapper
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
for(User user:userList){
System.out.println(user.getName() + " " + user.getId() + " " + user.getPwd());
}
//关闭SqlSession
sqlSession.close();
}
注意:当方法存在多个参数时,必须在参数前加上@Param(“xxx”),如:
@Select("select * from mybatis.user")
User getUserID(@Param("id") int id,@Param("name") int name);
实际查询时的参数名与@Param中的保持一致。
@Param()注解
- 基本类型的参数或String类型的参数,需要加上
- 引用类型不需要加
- 如果只有一个基本类型可以忽略,但是建议加上
- 在SQL中引用的就是这里的@Param里面设定的属性名
Lombok使用
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github地址:https://github.com/rzwitserloot/lombok。
简单来说,就是我们可以使用注解来替代那些杂乱的get,set,toString方法。
首先安装Lombok插件,这个相信大家都会。
然后导入maven对应的依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
常用的注解:
@Data
:
自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法
为非final字段添加@Setter,和@RequiredArgsConstructor!
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private String pwd;
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
}
@NoArgsConstructor
: 自动生成无参数构造函数。
@AllArgsConstructor
: 自动生成全参数构造函数。
还有其他一些比如自动生成日志对象等等之类的注解可以到官方网站去了解,就不一一列举了。
根据情况使用,但请不要依赖这个插件!