`

45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

阅读更多

 

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

 

大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际中会集成多个,这样保存的数据的时候,选择一个最方便的也就是JPA,查询的时候,或者统计的时候,选择一个效率最高的,也就是直接使用SQL语句方式,当然这并一定要这样的,现在优化方式又很多。那么这节说说怎么在Spring Boot中使用MyBatis吧。主要分几个步骤进行讲解:

本章大纲 写道
(1)新建maven project;
(2)在pom.xml文件中引入相关依赖;
(3)创建启动类App.java
(4)在application.properties添加配置文件;
(5)编写Demo测试类;
(6)编写DemoMapper;
(7)编写DemoService
(8)编写DemoController;
(9)加入PageHelper

 

      

       接下里我们一起来进行实现吧。

1)新建maven project;

       新建一个maven project,取名为:spring-boot-mybatis

 

2)在pom.xml文件中引入相关依赖;

       pom.xml中加入依赖:mysql驱动,mybatis依赖包,mysql分页PageHelper:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>com.kfit</groupId>

  <artifactId>spring-boot-mybatis</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

 

  <name>spring-boot-mybatis</name>

  <url>http://maven.apache.org</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- jdk版本号,angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->

    <java.version>1.8</java.version>

  </properties>

 

    <!--

       spring boot 父节点依赖,

       引入这个之后相关的引入就不需要添加version配置,

       spring boot会自动选择最合适的版本进行添加。

     -->

    <parent>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-parent</artifactId>

       <version>1.3.3.RELEASE</version>

    </parent>

 

  <dependencies>

       

   

    <!-- spring boot web支持:mvc,aop... -->

    <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

   

   

    <!-- mysql 数据库驱动. -->

    <dependency>

       <groupId>mysql</groupId>

       <artifactId>mysql-connector-java</artifactId>

    </dependency>

   

   

    <!--  

           spring-boot mybatis依赖:

          

           请不要使用1.0.0版本,因为还不支持拦截器插件,

            1.1.1 是博主写帖子时候的版本,大家使用最新版本即可

         -->

    <dependency>

        <groupId>org.mybatis.spring.boot</groupId>

        <artifactId>mybatis-spring-boot-starter</artifactId>

        <version>1.1.1</version>

    </dependency>

   

    <!--

        MyBatis提供了拦截器接口,我们可以实现自己的拦截器,

        将其作为一个plugin装入到SqlSessionFactory中。

       Github上有位开发者写了一个分页插件,我觉得使用起来还可以,挺方便的。

       Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper

     -->  

    <dependency>

        <groupId>com.github.pagehelper</groupId>

        <artifactId>pagehelper</artifactId>

        <version>4.1.0</version>

    </dependency>

       

  </dependencies>

</project>

 

3)创建启动类App.java >com.kfit.App.java

package com.kfit;

 

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

 

/**

 * 启动类;

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

@SpringBootApplication

@MapperScan("com.kfit.*.mapper")

publicclass App {

    publicstaticvoid main(String[] args) {

       SpringApplication.run(App.class, args);

    }

}

       这里和以往不一样的地方就是MapperScan的注解,这个是会扫描该包下的接口。

这里我们使用注解的方式进行使用MyBatis,当然您也可以使用xml文件的方式进行使用。

 

4)在application.properties添加配置文件;

       Mysql的配置,这个我们已经是轻车熟路了:

########################################################

###datasource

########################################################

spring.datasource.url = jdbc:mysql://localhost:3306/test

spring.datasource.username = root

spring.datasource.password = root

spring.datasource.driverClassName = com.mysql.jdbc.Driver

spring.datasource.max-active=20

spring.datasource.max-idle=8

spring.datasource.min-idle=8

spring.datasource.initial-size=10

 

5)编写Demo测试类;

       测试实体类com.kfit.demo.bean.Demo

package com.kfit.demo.bean;

 

/**

 * 测试类.

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

publicclass Demo {

    private long id;

    private String name;

    public long getId() {

       returnid;

    }

    public void setId(longid) {

       this.id = id;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

}

 

 

6)编写DemoMapper

MyBatis使用类,这里主要是@select进行使用.

com.kfit.demo.mapper.DemoMappper

package com.kfit.demo.mapper;

 

import java.util.List;

 

import org.apache.ibatis.annotations.Select;

 

import com.kfit.demo.bean.Demo;

 

public interface DemoMappper {

   

    @Select("select *from Demo where name = #{name}")

    public List<Demo> likeName(String name);

   

    @Select("select *from Demo where id = #{id}")

    public Demo getById(long id);

   

    @Select("select name from Demo where id = #{id}")

    public String getNameById(long id);

   

   

}

 

7)编写DemoService

       com.kfit.demo.service.DemoService

package com.kfit.demo.service;

 

import java.util.List;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

 

import com.kfit.demo.bean.Demo;

import com.kfit.demo.mapper.DemoMappper;

 

@Service

public class DemoService {

    @Autowired

    private DemoMappper demoMappper;

   

    public List<Demo> likeName(String name){

        return demoMappper.likeName(name);

    }

}

 

 

8)编写DemoController;

com.kfit.demo.controller.DemoController

package com.kfit.demo.controller;

 

import java.util.List;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

import com.github.pagehelper.PageHelper;

import com.kfit.demo.bean.Demo;

import com.kfit.demo.service.DemoService;

 

@RestController

publicclass DemoController {

    @Autowired

    private DemoService demoService;

   

    @RequestMapping("/likeName")

    public List<Demo> likeName(String name){

       return demoService.likeName(name);

    }

   

}

 

运行访问:http://127.0.0.1:8080/likeName?name=张三  就可以看到全部的数据了。

9)加入PageHelper

       这里与其说集成分页插件,不如说是介绍如何集成一个pluginMyBatis提供了拦截器接口,我们可以实现自己的拦截器,将其作为一个plugin装入到SqlSessionFactory中。

Github上有位开发者写了一个分页插件,我觉得使用起来还可以,挺方便的。

Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper

当然需要添加相应的依赖包了,我们在上面已经配置了,这里简单说下:

<dependency>

    <groupId>com.github.pagehelper</groupId>

    <artifactId>pagehelper</artifactId>

    <version>4.1.0</version>

</dependency>

 

新增MyBatisConfiguration.java

com.kfit.config.mybatis.MyBatisConfiguration

package com.kfit.config.mybatis;

 

import java.util.Properties;

 

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

 

import com.github.pagehelper.PageHelper;

 

/**

 * 注册MyBatis分页插件PageHelper

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

@Configuration

public class MyBatisConfiguration {

   

    @Bean

    public PageHelper pageHelper() {

       System.out.println("MyBatisConfiguration.pageHelper()");

        PageHelper pageHelper = new PageHelper();

        Properties p = new Properties();

        p.setProperty("offsetAsPageNum", "true");

        p.setProperty("rowBoundsWithCount", "true");

        p.setProperty("reasonable", "true");

        pageHelper.setProperties(p);

        return pageHelper;

    }

   

}

 

分页查询测试

@RequestMapping("/likeName")

    public List<Demo> likeName(String name){

        PageHelper.startPage(1,1);

         return demoService.likeName(name);

    }

这个使用起来特别的简单,只是在原来查询的代码之前加入了一句:

 PageHelper.startPage(1,1);

第一个参数是第几页;

第二个参数是每页显示条数。

 

访问http://127.0.0.1:8080/likeName?name=张三 进行测试。

  Spring Boot 系列博客】

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

网易云课堂视频最新更新

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

第十二章 Spring Boot 知识点2

1、spring boot 服务配置和部署

2、Spring Boot 定制URL匹配规则

 

 

历史章节

 

第一章 快速开始

1、Spring Boot之Hello World

2、Spring Boot之Hello World访问404

 

第二章 Spring Boot之JSON

1、spring boot返回json数据

2、Spring Boot完美使用FastJson解析JSON数据

 

第三章 Spring Boot热部署

1、Spring Boot热部署(springloader)

2、springboot + devtools(热部署)

 

第四章 Spring Boot数据库

1、Spring Boot JPA/Hibernate/Spring Data概念

2、Spring Boot JPA-Hibernate

3、Spring Boot Spring Data JPA介绍

4、Spring Boot JdbcTemplate

5、Spring Boot集成MyBatis

 

第五章 web开发

1、全局异常捕捉

2、配置server信息

3、spring boot使用thymeleaf

4、Spring Boot 使用freemarker

5、Spring Boot添加JSP支持

 

第六章 定时任务

1、Spring Boot定时任务

2、Spring Boot 定时任务升级篇(动态修改cron参数)

3、Spring Boot 定时任务升级篇(动态添加修改删除定时任务)

4、Spring Boot 定时任务升级篇(集群/分布式下的定时任务说明)

5、Spring Boot Quartz介绍

6、Spring Boot Quartz在Java Project中使用

7、Spring Boot 集成Quartz普通使用

8、Spring Boot 集成Quartz升级版

9、Spring Boot 集成Quartz二次升级版

10、Spring Boot 集成Quartz-Job如何自动注入Spring容器托管的对象

 

第七章 Spring Boot MyBatis升级篇

1、Spring Boot MyBatis升级篇-注解

2、Spring Boot MyBatis升级篇-注解-自增ID

3、Spring Boot MyBatis升级篇-注解-增删改查

4、Spring Boot MyBatis升级篇-注解-分页查询

5、Spring Boot MyBatis升级篇-注解-分页PageHelper不生效

6、Spring Boot MyBatis升级篇-注解- mybatic insert异常:BindingException: Parameter 'name' not found

7、Spring Boot MyBatis升级篇-注解- #和$符号特别篇

8、Spring Boot MyBatis升级篇-注解-@Result

9、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案一:<script>

10、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案二:@Provider

11、Spring Boot MyBatis升级篇-注解-动态SQL-参数问题

12、Spring Boot MyBatis升级篇-注解-特别篇:@MapperScan和@Mapper

13、Spring Boot MyBatis升级篇-XML

14、Spring Boot MyBatis升级篇-XML-自增ID

15、Spring Boot MyBatis升级篇-XML-增删改查

16、Spring Boot MyBatis升级篇-XML-分页查询

17、Spring Boot MyBatis升级篇-XML-分页PageHelper不生效

18、Spring Boot MyBatis升级篇-XML-动态SQL(if test)

19、Spring Boot MyBatis升级篇-XML-注解-初尝试

20、Spring Boot MyBatis升级篇- pagehelper替换为pagehelper-spring-boot-starter

 

第八章 Spring Boot 知识点1

1、Spring Boot 拦截器HandlerInterceptor

2、Spring Boot启动加载数据CommandLineRunner

3、Spring Boot环境变量读取和属性对象的绑定

4、Spring Boot使用自定义的properties

5、Spring Boot使用自定义的properties

6、Spring Boot使用@SpringBootApplication

7、Spring Boot 监控和管理生产环境

 

第十章 Spring Boot 打包部署

1、Spring Boot打包部署((提供Linux的sh文件))

 

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

 

更多查看博客: http://412887952-qq-com.iteye.com/

 

 

 

分享到:
评论
9 楼 林祥纤 2017-07-07  
Youth_Forever 写道
我的一直报错,请问db在哪?


数据库连接正常的话,会自动创建表结构。
8 楼 Youth_Forever 2017-07-04  
我的一直报错,请问db在哪?
7 楼 mgs2002 2017-04-01  
LZ,我写的1.1.1还是查询到全部数据
6 楼 zwh2395847zwh 2017-02-04  
请教楼主,注解式事务不生效怎么解决,不修改数据库本身的autoCommit配置的前提下
5 楼 林祥纤 2016-12-31  
yuchao2015 写道
数据源  sqlsessionFactory 那些东西都不用配置了吗


底层有默认的配置。
4 楼 yuchao2015 2016-12-30  
数据源  sqlsessionFactory 那些东西都不用配置了吗
3 楼 假面派 2016-11-21  
请问数据显示在哪里?
2 楼 林祥纤 2016-09-14  
hu1013 写道
楼主,为什么 我和你一样的分页,查询到的还是全部数据呢?


mybatis-spring-boot-starter  版本号。
1 楼 hu1013 2016-09-14  
楼主,为什么 我和你一样的分页,查询到的还是全部数据呢?

相关推荐

Global site tag (gtag.js) - Google Analytics