IDEA: spring+mybatis+springMVC SSM框架(三) spring 整合 Mybatis 以及分页插件 PageHelper

在前两章文章中的项目基础上 我们先添加 需要用到的依赖 ~
如果是新看到的同学可以去在这篇文章底部找下下载地址~




  com.alibaba
  druid
  1.1.10





  org.mybatis
  mybatis
  3.3.1





  org.mybatis
  mybatis-spring
  1.2.5




  org.springframework
  spring-tx
  4.3.20.RELEASE





  org.springframework
  spring-jdbc
  4.3.20.RELEASE





  com.github.pagehelper
  pagehelper
  5.0.4




  mysql
  mysql-connector-java
  5.1.40




  com.fasterxml.jackson.core
  jackson-core
  2.8.0



  com.fasterxml.jackson.core
  jackson-databind
  2.8.0


然后创建一个数据库的配置文件:jdbc.properties

driver=com.mysql.jdbc.Driver
#地址和数据库用户密码别忘了换成自己的
url = jdbc:mysql://192.168.153.128:3306/test
username=root
password=root
initialSize=10
maxActive=200
maxIdle=50
minIdle=10
maxWait=60000

需要检查查数据是否准确 我把我的sql拿出来 嫌麻烦直接运行~

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'name1');
INSERT INTO `user` VALUES ('2', 'name2');
INSERT INTO `user` VALUES ('3', 'name3');
INSERT INTO `user` VALUES ('4', 'name4');
INSERT INTO `user` VALUES ('5', 'name5');
INSERT INTO `user` VALUES ('6', 'name6');
INSERT INTO `user` VALUES ('7', 'name7');

创建mybatis的配置文件里面引用插件PageHelper:mybatis.config

内容如下:





    
        
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    


修改文件ApplicationContext.xml 上一章我们把 context:component-scan 注释掉了 后续写声明式事务会详细讲在这里先提一下

如果@Transactional 加在Service上 这里就有必要去扫描下 service的包 Spring-mvc的配置文件就不需要再去扫描service包了 否则@Transactional 将不会生效

ApplicationContext.xml文件内容如下:




    
    
        
    

    
    
        
    

    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
        
        
        
        
    

    
    
        
        
    

    
    
        
    

    


然后修改文件ApplicationContext-mvc.xmlcontext:component-scan扫描范围指定为只扫描Controller



在这里先放下项目结构图

IDEA: spring+mybatis+springMVC SSM框架(三) spring 整合 Mybatis 以及分页插件 PageHelper_第1张图片

我们先创建User实体为UserMapper.xml提供服务,内容如下:

package com.ssm.pojo.user;

public class User {

    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }
}

然后创建UserMapper.xml 内容如下,很简单 就是一个查全表的sql:




    
        
        
    
    id, name

    

然后创建Mapper接口,我们调用Mapper接口方法时 返回的就是 Mapper.xml中的 数据集合 相当于UserMapper.xml重写了UserMapper.java 的方法,内容如下:

package com.ssm.dao.user;


import com.ssm.pojo.user.User;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper {
    List getAll();
}

然后创建UserServcie 内容如下,一个方法是查全表 一个是整合PageHelper分页查询:

package com.ssm.service.user;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ssm.dao.user.UserMapper;
import com.ssm.pojo.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServcie {

    @Autowired
    private UserMapper userMapper;


    public List findUserList() {
        List list = userMapper.getAll();
        return list;
    }

    public List findUserListPage() {
//        pageHelper 开启分页 当前第一页 每页3条
        PageHelper.startPage(1,3);
//        当前线程开启分页后第一个查询 使用分页
        List list = userMapper.getAll();
//        获取分页信息
        PageInfo result = new PageInfo<>(list);
//        获取分页查询后的list => result.getList()
        System.out.println(result.getList().toString());
        System.out.println(result.getList().size());
        return result.getList();
    }

}


然后我们在TestController 中添加方法 验证下我们的整合是否成功,内容如下:

package com.ssm.controller;

import com.ssm.service.user.UserServcie;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
@RequestMapping(value = "test")
public class TestController {

    private Logger logger = Logger.getLogger(TestController.class);

    @Autowired
    private UserServcie userServcie;

    @RequestMapping(params = "firstMethod")
    public String firstMothed() {
//        testService.firstService();
        return "hello";
    }

    @RequestMapping(params = "secondMethod")
    @ResponseBody
    public String secondMethod() {
        return "hello";
    }

    @RequestMapping(params = "thirdMethod")
    @ResponseBody
    public Object thirdMethod() {
        return userServcie.findUserList();
    }

    @RequestMapping(params = "fourthMethod")
    @ResponseBody
    public Object fourthMethod() {
        return userServcie.findUserListPage();
    }

}


然后我们启动项目 在项目根目录后面加上 test.do?thirdMethod

返回结果如下 ,正常没有问题
在这里插入图片描述

然后我们启动项目 在项目根目录后面加上 test.do?fourthMethod 测试分页 1到3条

在这里插入图片描述

如果需要把sql打印出来,在log4j文件中添加下面这一句话,并把输出级别加上DEBUG

log4j.rootLogger=INFO,DEBUG, stdout
#mapper映射目录路径,dao接口在哪个目录下面改成log4j.logger.xxx.xxx
log4j.logger.com.ssm.dao=DEBUG

打印出的sql如下图所示

在这里插入图片描述

没有问题了 整合完毕 下章我们将Spring声明式事务~

IDEA: spring+mybatis+springMVC SSM框架(二) spring 整合 springMVC
IDEA: spring+mybatis+springMVC SSM框架(一) 搭建spring环境

此项目下载地址

有问题的话欢迎评论 大家一起学习 一起进步~

你可能感兴趣的:(spring)