springboot整合mybatis

在整合mybatis之前先整一个数据库连接池druid 它比其他的连接池要好一点 有自己的平台 登陆进去可以看到数据库具体登陆的操作以及一些增删改查操作url等

1.导pom依赖

 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>1.1.10</version>
  </dependency>

  2. 配置application.yml

里面的参数设置都有备注 上面是自己的数据库配置 下面是访问连接池的登录名密码等

spring:
  datasource:
    #1.JDBC
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/yy?useUnicode=true&characterEncoding=utf8
    username: root
    password: 123
    druid:
      #2.连接池配置
      #初始化连接池的连接数量 大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      #配置获取连接等待超时的时间
      max-wait: 60000
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 30000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: true
      test-on-return: false
      # 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filter:
        stat:
          merge-sql: true
          slow-sql-millis: 5000
      #3.基础监控配置
      web-stat-filter:
        enabled: true
        url-pattern: /*
        #设置不统计哪些URL
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        session-stat-enable: true
        session-stat-max-count: 100
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/* #项目请求druid访问的路径 项目名加/druid
        reset-enable: true
        #设置监控页面的登录名和密码
        login-username: admin
        login-password: 123
        allow: 127.0.0.1
        #deny: 192.168.1.100 代表什么IP地址可用访问

3.运行主程序直接访问路径去查看

http://localost:8080/druid 这样即可访问进去

接下来是整合mybatis

首先也是导mybatis依赖

<dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>1.3.2</version>
  </dependency>
  ssm时代
  spring整合mybatis的步骤
  spring-mybatis.xml 配置
    注册db.properties
    配置一个数据源
    用数据源生产一个sqlsessionfactory

springboot导入依赖后还有两步没完成

然后写mapper跟service层进行测试 进行一个查询方法测试 发现没配置扫描包 所以需要在主配置类里添加一个注解

 @Test
    public void selectByPrimaryKey() {
        //没有配置扫描包 要在主配置类里加注解扫描到mapper包
        Book book = bookService.selectByPrimaryKey(12);
        System.out.println(book);
        Book book2 = bookService.selectByPrimaryKey(12);
        System.out.println(book2);

    }

然后是在主配置类里加上注解扫描这个mapper里面方法 如果查询成功 证明整合成功了

@MapperScan("com.yy.springboot.mapper")//配置里面扫描包
@SpringBootApplication
public class SpringBoot04Application {

这里提到一点测试类 

*以前的测试类是继承一个base类 里面有两个注解
 * 如果不继承就用此注解加载主配置类
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringBoot04Application.class)
public class BookServiceImplTest {
    @Autowired
    private BookService bookService;

如果控制台没有sql打印可以在yml里配置一个东西 这样控制台会进行自动打印SQL语句

#指定扫描哪个包下mapper 为了后台执行sql语句打印SQL日志
logging:
  level:
    com.yy.springboot.mapper: debug

最后还有一个整合pagehelper分页插件

1.导分页pom依赖

 <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.2.3</version>
  </dependency>

2.导pagebean相关工具类

package com.yy.springboot.util;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.Map;

public class PageBean implements Serializable {

	private static final long serialVersionUID = 2422581023658455731L;

	//页码
	private int page=1;
	//每页显示记录数
	private int rows=5;
	//总记录数
	private int total=0;
	//是否分页
	private boolean isPagination=true;
	//上一次的请求路径
	private String url;
	//获取所有的请求参数
	private Map<String,String[]> map;
	
	public PageBean() {
		super();
	}
	
	//设置请求参数
	public void setRequest(HttpServletRequest req) {
		String page=req.getParameter("page");
		String rows=req.getParameter("rows");
		String pagination=req.getParameter("pagination");
		this.setPage(page);
		this.setRows(rows);
		this.setPagination(pagination);
		this.url=req.getContextPath()+req.getServletPath();
		this.map=req.getParameterMap();
	}
	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public Map<String, String[]> getMap() {
		return map;
	}

	public void setMap(Map<String, String[]> map) {
		this.map = map;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}
	
	public void setPage(String page) {
		if(null!=page&&!"".equals(page.trim()))
			this.page = Integer.parseInt(page);
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}
	
	public void setRows(String rows) {
		if(null!=rows&&!"".equals(rows.trim()))
			this.rows = Integer.parseInt(rows);
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}
	
	public void setTotal(String total) {
		this.total = Integer.parseInt(total);
	}

	public boolean isPagination() {
		return isPagination;
	}
	
	public void setPagination(boolean isPagination) {
		this.isPagination = isPagination;
	}
	
	public void setPagination(String isPagination) {
		if(null!=isPagination&&!"".equals(isPagination.trim()))
			this.isPagination = Boolean.parseBoolean(isPagination);
	}
	
	/**
	 * 获取分页起始标记位置
	 * @return
	 */
	public int getStartIndex() {
		//(当前页码-1)*显示记录数
		return (this.getPage()-1)*this.rows;
	}
	
	/**
	 * 末页
	 * @return
	 */
	public int getMaxPage() {
		int totalpage=this.total/this.rows;
		if(this.total%this.rows!=0)
			totalpage++;
		return totalpage;
	}
	
	/**
	 * 下一页
	 * @return
	 */
	public int getNextPage() {
		int nextPage=this.page+1;
		if(this.page>=this.getMaxPage())
			nextPage=this.getMaxPage();
		return nextPage;
	}
	
	/**
	 * 上一页
	 * @return
	 */
	public int getPreivousPage() {
		int previousPage=this.page-1;
		if(previousPage<1)
			previousPage=1;
		return previousPage;
	}

	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", isPagination=" + isPagination
				+ "]";
	}
}

3.在yml里配置分页插件

 #pagehelper分页插件配置
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

然后就可进行方法测试 传入pagebean进行分页效果。

 public void selectBookPager() {
        /**
         * 配置PageHelper分页插件
         * 1.导分页pom依赖 2.导pagebean工具类 3.在application.yml里配置分页设置
         * 然后就可进行分页使用
         */
        PageBean pageBean=new PageBean();
        pageBean.setPage(2);
        Book book=new Book();
        List<Book> books = bookService.selectBookPager(book, pageBean);
        for (Book book2 : books) {
            System.out.println(book2);
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值