• Mybatis系列二-快速开发


    mybatis学习系列第二篇

    分页

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

    sqllimit来分页。

    首先是UserMapper.xml

    <!-- 实现分页的接口 -->
    
      <select id="getUserByLimit" parameterType="map" resultType="User">
    
    select * from mybatis.user limit #{startIndex},#{pageSize};
    
      </select>
    

    然后是UserMapper.java

      // 实现分页查询操作
        List<User> getUserByLimit(Map<String,Integer> map);
    

    再到测试类中的代码

    public void getUserByLimit() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserDao mapper = sqlSession.getMapper(UserDao.class);
    
            Map<String,Integer> map = new HashMap<>();
        //通过map来传参来实现数据的交互绑定
            map.put("startIndex", 1);
            map.put("pageSize", 2);
    
            List<User> userlist = mapper.getUserByLimit(map);
            for (User user : userlist) {
                System.out.println(user);
                
            }
    
            sqlSession.close();
            
        }
    

    还可以使用RowBounds来实现分页

    UserMapper.java

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

    UserMapper.xml

    <!-- 实现分页的方法二 -->
       <select id="getUserByLimit2"  resultType="User">
        select * from mybatis.user ;
    	</select>
    

    RowBounds构造方法,和limit相似。

    image-20200517090058269

    test代码

        public void getUserByLimit2() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
    
    
            RowBounds rowBounds = new RowBounds(1,2);
            // 使用java代码来实现分页操作
            List<User> 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<User> getUsers();
    

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

    image-20200517200001711

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

    @Test
    public void test() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
        List<User> 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

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

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
    
    </dependencies>
    

    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站狂神的视频记录的学习笔记

  • 相关阅读:
    VMWare Server 2.0 安装虚机机网卡驱动找不到
    OutLook The profile name you entered already exists.Enter a different profile name.
    GreyBox基本应用
    Java HashMap工作原理及实现
    C# winform 自定义皮肤制作
    C# Winform 右下角弹出框
    C# winform 最小化到电脑右下角
    C# Winform 的简易聊天程序
    C# winform QQ表情弹出框的制作
    C# 网络编程 TCP编程
  • 原文地址:https://www.cnblogs.com/yhycoder/p/12909345.html
Copyright © 2020-2023  润新知