MyBatis系列-分页

mybatis学习系列第二篇

分页

在网页中常常用到,在查询数据库内容并想将其输出的时候,因为有时有多组数据,一页展示过于突兀,所以会用到分页操作。

sqllimit来分页。

首先是UserMapper.xml



  

然后是UserMapper.java

  // 实现分页查询操作
    List getUserByLimit(Map map);

再到测试类中的代码

public void getUserByLimit() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);

        Map map = new HashMap<>();
    //通过map来传参来实现数据的交互绑定
        map.put("startIndex", 1);
        map.put("pageSize", 2);

        List userlist = mapper.getUserByLimit(map);
        for (User user : userlist) {
            System.out.println(user);
            
        }

        sqlSession.close();
        
    }

还可以使用RowBounds来实现分页

UserMapper.java

 // 实现分页的方法二
    List getUserByLimit2();

UserMapper.xml


   

RowBounds构造方法,和limit相似。

image-20200517090058269

test代码


    public void getUserByLimit2() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();


        RowBounds rowBounds = new RowBounds(1,2);
        // 使用java代码来实现分页操作
        List selectList = sqlSession.selectList("com.yhy.dao.UserDao.getUserByLimit2", null, rowBounds);

        for (User user : selectList) {
            System.out.println(user);
        }            

        sqlSession.close();
        
    }

输出结果

image-20200517090333835

pageHelper分页插件

了解

注解开发

本质是使用反射,还有动态代理模式

在工具类MybatisUtils中,打开自动提交事务,这样在后续的编写代码中就不要在使用commit

image-20200517150310456
//    有了工厂就可以获得实例来使用,sqlsession就可以面向数据库操作jdbc
//    打开自动提交事务
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }

注解开发流程-实例

整体文件结构

image-20200517195217954

使用注解开发的时候,接口里面定义的方法就是使用注解的地方,实例如下

//使用注解的方法,之前是需要写xml文件进行配置,这里就直接使用注解的方法
//这个方法是查询所有用户信息
@Select("select * from user")
List getUsers();

在主配置文件中,也是关键所在,绑定的有所不同。将文件资源标签改为class,并将所在的类位置标出。

image-20200517200001711

测试类-使用的步骤和之前的没有使用注解的方法一样。

@Test
public void test() {
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

    List users = mapper.getUsers();
    for (User user : users) {
        System.out.println(user);
    }

    sqlSession.close();

}

总的来说,注解是分散的数据配置,而xml是集中的数据配置。

使用注解可以很多程度来简化工作,省去了很多配置文件的编写,但有时注解过于分散不利于管理和维护,在一些通用配置上,像数据库连接等,还是比较建议xml文件进行配置,因为XML方式比注解的可扩展性和复杂性维护上好的多。所以注解有利有弊,看什么场景去使用,用对了就是事半功倍的效果!

了解Lombok

Lombok是一个java开发插件,目的是简化代码,方便开发,通过注解省去了一些pojo中的getset方法和构造方法,还有一些其他的tostringequals等。有些介绍可以参考官网中的文档,当然对于这款插件,欢呼声和骂声一直都充斥在各个平台,各种分析文章网上也有很多,我就不再去记录太多了。但任何事情都有其两面性,理性看待,喜欢觉得有用大家就用,不喜欢就当了解一些也不为过。下面是记录使用的一些图片代码。

1、插件下载--setting里面的插件

image-20200518102201415

2、maven导包,在官网找到信息进行导包,选择自己所需要的版本进行使用

image-20200518103524190

我选择了最新的版本,有错再去解决


    
    
        org.projectlombok
        lombok
        1.18.12
        provided
    


3、使用实例

在插件管理查看信息里面就可以看到Lombok的一些介绍吗,下面是一些注解的介绍

@Getter and @Setter //生成get和set方法
@FieldNameConstants 
@ToString //tostring方法
@EqualsAndHashCode //equals和hashcode方法的生成
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor //全参构造和无参构造和一个自定义构造
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger, @CustomLog
@Data //这个最常见了,加一个可以默认生成了一系列的方法,可以见下图使用
@Builder
@SuperBuilder
@Singular
@Delegate
@Value
@Accessors
@Wither
@With
@SneakyThrows
@val
@var
experimental @var
@UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)

将变量定义留着,其他方法注释掉,就可以自动生成了

image-20200518104820601

默认是生成了无参的构造器,加入AllArgsConstructor就可以了

image-20200518105023599

最后留下的代码就剩得这么干净。自己看的确实很舒服,当用的多了,不懂的人可能够呛哈哈哈。

image-20200518105157269

最后

这是第二篇mybatis文章,谢谢阅读。有错误请多多指教,谅解!跟随b站狂神的视频记录的学习笔记

你可能感兴趣的:(MyBatis系列-分页)