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

 

【视频 & 交流平台】

à SpringBoot视频

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud视频

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源码

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 


 

 


大家在开发的时候,会喜欢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:

<projectxmlns="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.0http://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>

 

       <!--

              springboot父节点依赖,

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

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

        -->

       <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-bootmybatis依赖:

                    

                    请不要使用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;

 

importorg.mybatis.spring.annotation.MapperScan;

importorg.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 {

       privatelongid;

       private Stringname;

       publiclong getId() {

              returnid;

       }

       publicvoid setId(longid) {

              this.id =id;

       }

       public StringgetName() {

              returnname;

       }

       publicvoid setName(Stringname) {

              this.name =name;

       }

}

 

 

(6)编写DemoMapper;

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

com.kfit.demo.mapper.DemoMappper:

package com.kfit.demo.mapper;

 

import java.util.List;

 

importorg.apache.ibatis.annotations.Select;

 

import com.kfit.demo.bean.Demo;

 

publicinterface DemoMappper {

      

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

       publicList<Demo> likeName(Stringname);

      

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

       public Demo getById(longid);

      

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

       public StringgetNameById(longid);

      

      

}

 

(7)编写DemoService

       com.kfit.demo.service.DemoService:

package com.kfit.demo.service;

 

import java.util.List;

 

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

importorg.springframework.stereotype.Service;

 

import com.kfit.demo.bean.Demo;

import com.kfit.demo.mapper.DemoMappper;

 

@Service

publicclass DemoService {

       @Autowired

       private DemoMappperdemoMappper;

      

   public List<Demo> likeName(Stringname){

        returndemoMappper.likeName(name);

   }

}

 

 

(8)编写DemoController;

com.kfit.demo.controller.DemoController:

package com.kfit.demo.controller;

 

import java.util.List;

 

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.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 DemoServicedemoService;

      

       @RequestMapping("/likeName")

       publicList<Demo> likeName(Stringname){

              returndemoService.likeName(name);

       }

      

}

 

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

(9)加入PageHelper

       这里与其说集成分页插件,不如说是介绍如何集成一个plugin。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>



 

新增MyBatisConfiguration.java

com.kfit.config.mybatis.MyBatisConfiguration:

package com.kfit.config.mybatis;

 

import java.util.Properties;

 

importorg.springframework.context.annotation.Bean;

importorg.springframework.context.annotation.Configuration;

 

import com.github.pagehelper.PageHelper;

 

/**

 *注册MyBatis分页插件PageHelper

 *@author Angel(QQ:412887952)

 *@version v.0.1

 */

@Configuration

publicclass 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);

        returnpageHelper;

   }

      

}

 

分页查询测试

@RequestMapping("/likeName")

       publicList<Demo> likeName(Stringname){

               PageHelper.startPage(1,1);

            returndemoService.likeName(name);

       }

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

 PageHelper.startPage(1,1);

第一个参数是第几页;

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

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


Spring Boot 系列视频】

视频&交流平台:

à Spring Boot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

网易云课堂视频最新更新

第十一章 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


悟纤 CSDN认证博客专家 知远公司创始人 架构师 访问1000万+
「公众号SpringBoot」:
①阿里巴巴前高级研发工程师;
②估值20亿美金的Blued架构师;
③北京知远公司创始人;
④浙江甄才公司架构师;
⑤云课堂学员10000+;
⑥博客访问量1000万+;
⑦10年互联网行业从业;
⑧360万的访问《从零开始学SprngBoot》作者;
⑨技术加盟多个独立项目。
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付 19.89元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值