栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis与Spring集成

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis与Spring集成

一、Mybatis与spring集成

         解决了代码重复的问题

1、导入pom依赖

1.1 添加spring相关依赖(5.0.2.RELEASE)

       spring-core

       spring-beans

       spring-context

       spring-orm

       spring-tx

       spring-aspects

       spring-web

   1.2 添加mybatis相关依赖

       mybatis核心:mybatis(3.4.5)

       Mybatis分页:pagehelper(5.1.2)

   1.3 spring整合mybatis(1.3.1)

       mybatis-spring

   1.4 添加dbcp2连接池

       commons-dbcp2(2.1.1)

       commons-pool2(2.4.3)

   1.5 添加日志配置(2.9.1)

       log4j-core

       log4j-api

       log4j-web

   1.6 其他

       junit(4.12)

       javax.servlet-api(4.0.0)

       lombok(1.18.2)

   注:使用mybatis-generator插件,pom文件添加支持


    UTF-8
    1.8
    1.8
    3.7.0

    
    
    5.0.2.RELEASE
    
    3.4.5
    
    5.1.44
    
    5.1.2
    
    1.3.1
    
    2.1.1
    2.4.3
    
    2.9.1
    
    4.12
    4.0.0
    1.18.2


    
    
        org.springframework
        spring-context
        ${spring.version}
    

    
        org.springframework
        spring-orm
        ${spring.version}
    

    
        org.springframework
        spring-tx
        ${spring.version}
    

    
        org.springframework
        spring-aspects
        ${spring.version}
    

    
        org.springframework
        spring-web
        ${spring.version}
    

    
        org.springframework
        spring-test
        ${spring.version}
    


    
    
        org.mybatis
        mybatis
        ${mybatis.version}
    

    
    
        mysql
        mysql-connector-java
        ${mysql.version}
    

    
    
        com.github.pagehelper
        pagehelper
        ${pagehelper.version}
    

    
    
        org.mybatis
        mybatis-spring
        ${mybatis.spring.version}
    


    
    
        org.apache.commons
        commons-dbcp2
        ${commons.dbcp2.version}
    

    
        org.apache.commons
        commons-pool2
        ${commons.pool2.version}
    


    
    
    
        org.apache.logging.log4j
        log4j-core
        ${log4j2.version}
    

    
        org.apache.logging.log4j
        log4j-api
        ${log4j2.version}
    

    
    
        org.apache.logging.log4j
        log4j-web
        ${log4j2.version}
    


    
    
        junit
        junit
        ${junit.version}
        test
    

    
        javax.servlet
        javax.servlet-api
        ${servlet.version}
        provided
    

    
        org.projectlombok
        lombok
        ${lombok.version}
        provided
    



    
    
        src/main/java
        
            **mappermodel"/> helperDialect=mysql

在工程的pom文件中增加spring-test的依赖 

 

org.springframework spring-test

${spring.version}

 在测试类上加
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext-mybatis.xml"})
 BookServicImpl(注解代替配置)

 

package com.dhm.servic.impl;

import com.dhm.mapper.BookMapper;
import com.dhm.model.Book;
import com.dhm.servic.BookServic;
import com.dhm.util.PageBean;
import com.dhm.vo.BookVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
@Service
public class  
package com.dhm.servic.impl;

import com.dhm.mapper.BookMapper;
import com.dhm.model.Book;
import com.dhm.servic.BookServic;
import com.dhm.util.PageBean;
import com.dhm.vo.BookVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
@Service
public class  BookServicImpl implements BookServic {
    @Autowired
    private BookMapper bookMapper;
    

    @Override
    public int deleteByPrimaryKey(Integer bid) {
        return bookMapper.deleteByPrimaryKey(bid);
    }

    @Override
    public int insert(Book record) {
        return bookMapper.insert(record);
    }

    @Override
    public int insertSelective(Book record) {
        return bookMapper.insert(record);
    }

    @Override
    public Book selectByPrimaryKey(Integer bid) {
        return bookMapper.selectByPrimaryKey(bid);
    }

    @Override
    public int updateByPrimaryKeySelective(Book record) {
        return bookMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public int updateByPrimaryKey(Book record) {
        return bookMapper.updateByPrimaryKey(record);
    }

    @Override
    public List selectBooksIn(List bookIds) {
        return bookMapper.selectBooksIn(bookIds);
    }

    @Override
    public List selectBooksLike1(String bname) {
        return bookMapper.selectBooksLike1(bname);
    }

    @Override
    public List selectBooksLike2(String bname) {
        return bookMapper.selectBooksLike2(bname);
    }

    @Override
    public List selectBooksLike3(String bname) {
        return bookMapper.selectBooksLike3(bname);
    }

    @Override
    public List list1() {
        return bookMapper.list1();
    }

    @Override
    public List list2() {
        return bookMapper.list2();
    }

    @Override
    public Book list3(BookVo bookVo) {
        return bookMapper.list3(bookVo);
    }

    @Override
    public List list4() {
        return bookMapper.list4();
    }

    @Override
    public Map list5(Map book) {
        return bookMapper.list5(book);
    }

    @Override
    public List listPager(Map map, PageBean pageBean) {
        if(pageBean != null && pageBean.isPagination()) {
            PageHelper.startPage(pageBean.getPage(), pageBean.getRows());

        }
        List list = bookMapper.listPager(map);
        if(pageBean != null && pageBean.isPagination()){
            PageInfo pageInfo = new PageInfo(list);
            System.out.println("页码:"+pageInfo.getPageNum());
            System.out.println("页大小:"+pageInfo.getPageSize());
            System.out.println("总记录:"+pageInfo.getTotal());
            pageBean.setTotal(pageInfo.getTotal()+"");
        }
        return list;
    }

    @Override
    public List list6(BookVo bookVo) {
        return bookMapper.list6(bookVo);
    }

    @Override
    public List list7(BookVo bookVo) {
        return bookMapper.list7(bookVo);
    }


}
 implements BookServic {
    @Autowired
    private BookMapper bookMapper;
    

    @Override
    public int deleteByPrimaryKey(Integer bid) {
        return bookMapper.deleteByPrimaryKey(bid);
    }

    @Override
    public int insert(Book record) {
        return bookMapper.insert(record);
    }

    @Override
    public int insertSelective(Book record) {
        return bookMapper.insert(record);
    }

    @Override
    public Book selectByPrimaryKey(Integer bid) {
        return bookMapper.selectByPrimaryKey(bid);
    }

    @Override
    public int updateByPrimaryKeySelective(Book record) {
        return bookMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public int updateByPrimaryKey(Book record) {
        return bookMapper.updateByPrimaryKey(record);
    }

    @Override
    public List selectBooksIn(List bookIds) {
        return bookMapper.selectBooksIn(bookIds);
    }

    @Override
    public List selectBooksLike1(String bname) {
        return bookMapper.selectBooksLike1(bname);
    }

    @Override
    public List selectBooksLike2(String bname) {
        return bookMapper.selectBooksLike2(bname);
    }

    @Override
    public List selectBooksLike3(String bname) {
        return bookMapper.selectBooksLike3(bname);
    }

    @Override
    public List list1() {
        return bookMapper.list1();
    }

    @Override
    public List list2() {
        return bookMapper.list2();
    }

    @Override
    public Book list3(BookVo bookVo) {
        return bookMapper.list3(bookVo);
    }

    @Override
    public List list4() {
        return bookMapper.list4();
    }

    @Override
    public Map list5(Map book) {
        return bookMapper.list5(book);
    }

    @Override
    public List listPager(Map map, PageBean pageBean) {
        if(pageBean != null && pageBean.isPagination()) {
            PageHelper.startPage(pageBean.getPage(), pageBean.getRows());

        }
        List list = bookMapper.listPager(map);
        if(pageBean != null && pageBean.isPagination()){
            PageInfo pageInfo = new PageInfo(list);
            System.out.println("页码:"+pageInfo.getPageNum());
            System.out.println("页大小:"+pageInfo.getPageSize());
            System.out.println("总记录:"+pageInfo.getTotal());
            pageBean.setTotal(pageInfo.getTotal()+"");
        }
        return list;
    }

    @Override
    public List list6(BookVo bookVo) {
        return bookMapper.list6(bookVo);
    }

    @Override
    public List list7(BookVo bookVo) {
        return bookMapper.list7(bookVo);
    }


}
BookServicImplTest
package impl;


import com.dhm.mapper.BookMapper;
import com.dhm.model.Book;
import com.dhm.servic.BookServic;
import com.dhm.servic.impl.BookServicImpl;
import com.dhm.util.PageBean;
import com.dhm.util.SessionUtil;
import com.dhm.vo.BookVo;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext-mybatis.xml"})
public class BookServicImplTest {
@Autowired
    private BookServic bookServic;
    @Test
    public void testSelectBooksIn() {
        System.out.println("Mybatis中的foreach标签......");
        List books=this.bookServic.selectBooksIn(Arrays.asList(new Integer[]{24, 28, 29}));
        books.forEach(System.out::println);
    }
    @Test
    public void deleteByPrimaryKey() {
        System.out.println("业务方法......");
        this.bookServic.deleteByPrimaryKey(23);
    }
    @Test
    public void testSelectByPrimaryKey() {
      this.bookServic.selectByPrimaryKey(23);

    }
    @Test
    public void selectBooksLike1() {
        System.out.println("Mybatis中的模糊查询#与$......");
        List books=this.bookServic.selectBooksLike1("%圣墟%");
        books.forEach(System.out::println);
    }
    @Test
    public void selectBooksLike2() {
        System.out.println("Mybatis中的模糊查询#与$......");
        List books=this.bookServic.selectBooksLike2("%圣墟%");
        books.forEach(System.out::println);
    }

    public void selectBooksLike3() {
        System.out.println("Mybatis中的模糊查询#与$......");
        List books=this.bookServic.selectBooksLike3("圣墟");
        books.forEach(System.out::println);
    }
    @Test
    public void list1() {
        System.out.println("五中返回类型配置......");
        List books=this.bookServic.list1();
        books.forEach(System.out::println);
    }
    @Test
    public void list2() {
        System.out.println("五中返回类型配置......");
        List books=this.bookServic.list2();
        books.forEach(System.out::println);
    }
    @Test
    public void list3() {
        System.out.println("五中返回类型配置......");
        BookVo bookVo=new BookVo();
        bookVo.setBookIds(Arrays.asList(new Integer[]{29}));
        System.out.println(this.bookServic.list3(bookVo));
    }
    @Test
    public void list4() {
        System.out.println("五中返回类型配置......");
        List books=this.bookServic.list4();
        books.forEach(System.out::println);
    }
    @Test
    public void list5() {
        System.out.println("五中返回类型配置......");
        Map map=new HashMap();
        map.put("bid",29);
        Map m= this.bookServic.list5(map);
        System.out.println(m);

    }
    @Test
    public void list6() {
        System.out.println("五中返回类型配置......");
       BookVo vo=new BookVo();
       vo.setMin(20f);
       vo.setMax(40f);
       List books= this.bookServic.list6(vo);
        books.forEach(System.out::println);

    }
    @Test
    public void list7() {
        System.out.println("五中返回类型配置......");
        BookVo vo=new BookVo();
        vo.setMin(20f);
        vo.setMax(40f);
        List books= this.bookServic.list7(vo);
        books.forEach(System.out::println);

    }
    @Test
    public void listPager() {
        System.out.println("五中返回类型配置......");
        Map map=new HashMap();
        map.put("bname","圣墟");
        PageBean pageBean=new PageBean();
        //不分页
       // pageBean.setPagination(false);
        List ms=this.bookServic.listPager(map,pageBean);
        ms.forEach(System.out::println);
    }


    @Before
    public void setUp() throws Exception {
//        System.out.println("调用方法前使用");
//        BookServicImpl bookServic=new BookServicImpl();
//        SqlSession sqlSession= SessionUtil.openSession();
//        BookMapper mapper=sqlSession.getMapper(BookMapper.class);
//        bookServic.setBookMapper(mapper);
//        this.bookServicServic=bookServic;
    }

    @After
    public void tearDown() throws Exception {
//        System.out.println("调用方法后使用");
//        this.sqlSession.commit();
//        this.sqlSession.close();
//        this.bookServic=bookServic;
    }

}

二、Aop整合pagehelper插件

分页总结:

1、定义分页的方法,分页方法至少需要两个传递参数

2、分页的核心关键点

       ①、PageBean

       ②、PageHelper

3、代码的逻辑顺序

 PageHelper.startPage  启动分页>正常查询业务>处理查询结果集

1、切面中需要思考的部分

   pageHelper.startPage   启动分页>处理查询结果集>加入环绕通知中

2、切面类上要定义规则,只有分页方法才能进切面类

3、必须要判断*Pager是否传递了pageBean

编码阶段

1、拿到被代理的方法的参数列表,进行遍历,如果列表中包含了pagebean,给pagebean赋值

 2、核心代码 :   PageHelper.startPage  启动分页>正常查询业务>处理查询结果集

PagerAspert (切面)
package com.dhm.aspect;

import com.dhm.util.PageBean;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.util.List;


@Component
@Aspect
public class PagerAspert {
//切面类上要定义规则,只有分页方法才能进切面类
    @Around("execution(* *..*Servic.*Pager(..))")
    public Object invoke(ProceedingJoinPoint args) throws Throwable {
        Object[] params = args.getArgs();
        PageBean pageBean = null;
        for (Object param : params) {
            if(param instanceof PageBean){
                pageBean = (PageBean)param;
                break;
            }
        }

        if(pageBean != null && pageBean.isPagination()) {

            PageHelper.startPage(pageBean.getPage(), pageBean.getRows());
        }
        Object list = args.proceed(params);

        if(null != pageBean && pageBean.isPagination()){
            PageInfo pageInfo = new PageInfo((List) list);
            pageBean.setTotal(pageInfo.getTotal()+"");
        }
        return list;
    }
}

 

-------------------没有了------------------------

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号