初识 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 的项目就完成了,粗枝大叶的建立了一个集成的框架,当然还有更深入的配置设置。本文主要针对新手入门练习使用,希望本文可以帮助到你。感谢阅读。
好了,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
评论