写点什么

【Spring Boot 快速入门】二、Spring Boot 集成 MyBatis 可以连接数据库啦!

作者:小阿杰
  • 2021 年 12 月 15 日
  • 本文字数:4095 字

    阅读完需:约 13 分钟

【Spring Boot 快速入门】二、Spring Boot集成MyBatis可以连接数据库啦!

初识 MyBatis

  MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。


  使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:


        <!-- mybatis start-->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <scope>runtime</scope>        </dependency>        <!-- mybatis-spring-boot-starter -->        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>2.1.1</version>        </dependency>        <!-- druid -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.1.11</version>        </dependency>
复制代码

MyBatis 特点

  MyBatis 能够被广泛使用,与他的优点是分不开的。主要是简单易学、配置灵活、简洁的标签、支持动态 SQL,以下是汇总的 MyBatis 优点:


  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个 jar 文件+配置几个 sql 映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

  • 配置灵活:MyBatis 不会对应用程序或者数据库的现有设计强加任何影响。 SQL 写在 xml 里,便于统一管理和优化。通过 sql 语句可以满足操作数据库的所有需求。

  • 解除 SQL 与程序代码的耦合:通过提供 DAO 层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。SQL 和代码的分离,提高了可维护性。

  • 提供映射标签:支持对象与数据库的 ORM 字段关系映射

  • 提供对象关系映射标签:支持对象关系组建维护

  • 提供 xml 标签:支持编写动态 sql。

MyBatis 配置

  本次介绍的 MyBatis 配置是 application.properties 文件,当然还有 yml 类型的文件。


  • spring.datasource.url:数据库服务器连接地址

  • spring.datasource.username:数据库用户名

  • spring.datasource.password:数据库用户密码

  • spring.datasource.driver-class-name:数据源驱动类名

  • spring.datasource.type:数据源驱动类型

  • mybatis.mapper-locations:本地 sql 配置文件路径地址


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullspring.datasource.username=testspring.datasource.password=12345678spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.mapper-locations=classpath*:mapper/**/*.xml
复制代码

项目结构

项目结构如下图,主要包含启动类 DemoMyBatisApplication、Controller、Service、ServiceImpl、Mapper、application.properties 和 pom.xml


@MapperScan 注解

  @MapperScan 配置一个或多个包路径,自动的扫描这些包路径下的类,自动的为它们生成代理类。一定要加上这个注解,否则启动项目会报异常。

项目启动

  在项目中找到 DemoMyBatisApplication 启动类,右击选择启动即可。

查询数据

  在浏览器中输入:http://127.0.0.1:8888/user/getAllUser 即可查询到用户数据信息。如下图返回数据信息


上源码

  本次项目使用的源码可以直接拿来使用学习,作者都经过测试,可以正常运行。以下源码仅供学习使用。

pom.xml

<?xml version="1.0" encoding="UTF-8"?><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 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.3.0.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.example</groupId>    <artifactId>mybatis</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>mybatis</name>    <description>Demo project for Spring Boot and MyBatis and Swagger</description>
<properties> <java.version>1.8</java.version> </properties>
<dependencies> <!-- commons start --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency> <!-- commons end -->
<!-- mybatis start--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.11</version> </dependency> <!-- mybatis end--> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
复制代码

application.properties

server.port=8888
# mysqlspring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullspring.datasource.username=testspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.mapper-locations=classpath*:mapper/**/*.xml
复制代码

DemoMyBatisApplication

package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;
/** * @ClassName DemoMyBatisApplication * @Description: 启动类 * @Author JavaZhan @公众号:Java全栈架构师 * @Date 2020/6/13 * @Version V1.0 **/@SpringBootApplication@MapperScan("com.example.demo.mapper")public class DemoMyBatisApplication {
public static void main(String[] args) { SpringApplication.run(DemoMyBatisApplication.class, args); }
}
复制代码

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.demo.mapper.UserMapper">  <resultMap id="BaseResultMap" type="com.example.demo.module.User">    <id column="id" jdbcType="INTEGER" property="id" />    <result column="name" jdbcType="VARCHAR" property="name" />    <result column="age" jdbcType="INTEGER" property="age" />  </resultMap>  <sql id="Base_Column_List">    id, name, age  </sql>  <select id="getAllUser" resultType="com.example.demo.module.User">    SELECT * FROM user  </select></mapper>
复制代码

UserController

package com.example.demo.controller;
import com.example.demo.module.User;import com.example.demo.service.UserService;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;import java.util.List;
/** * @ClassName UserController * @Description: TODO * @Author JavaZhan @公众号:Java全栈架构师 * @Date 2020/6/13 * @Version V1.0 **/@RequestMapping("user")@Controllerpublic class UserController {
@Resource private UserService userService;
@RequestMapping("getAllUser") @ResponseBody public List<User> getAllUser(){ return userService.getAllUser(); }}
复制代码


  具体的实现方式,用户可以根据业务逻辑去开发处理,本文就不罗列具体实现类的相关代码,大家根据需要开发即可。

结语

  本次基于 Spring Boot 集成 MyBatis 的项目就完成了,粗枝大叶的建立了一个集成的框架,当然还有更深入的配置设置。本文主要针对新手入门练习使用,希望本文可以帮助到你。感谢阅读。


  好了,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

发布于: 14 小时前阅读数: 14
用户头像

小阿杰

关注

一个爱鼓捣的程序猿,JAVA开发者和爱好者。 2020.10.24 加入

一个爱鼓捣的程序猿,JAVA开发者和爱好者。 分享生活工作中所见、所闻、所学、所用,愿不断成长。公众号【Java全栈架构师】维护者。 自建微信小程序【软考真题解析】【实用在线工具箱】,欢迎阅读交流。

评论

发布
暂无评论
【Spring Boot 快速入门】二、Spring Boot集成MyBatis可以连接数据库啦!