zoukankan      html  css  js  c++  java
  • SpringBoot系列-整合Mybatis(XML配置方式)

    本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程。

    一、什么是 MyBatis?

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

    二、整合方式

    SpringBoot整合Mybatis也有两种方式,分别为XML配置方式和注解方式,主要优势点如下:

    1. 注解方式:代码更加精简,方便。
    2. XML配置方式:隔离sql和业务代码,清晰表达sql,尤其对于较长的sql。

    XML映射文件也很简单,只有很少的几个顶级元素:

    • cache – 对给定命名空间的缓存配置。
    • cache-ref – 对其他命名空间缓存配置的引用。
    • resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
    • sql – 可被其他语句引用的可重用语句块。
    • insert – 映射插入语句。
    • update – 映射更新语句。
    • delete – 映射删除语句。
    • select – 映射查询语句。

    本文介绍XML配置方式,后续文章再介绍注解方式。

    三、实战

    新建一个spring boot项目spring-boot-mybatis-xml,按照下面步骤操作。

    1.pom.xml中引入jar

    整合MyBatis的核心是依赖MyBatis-Spring-Boot-Starter,它提供了:

    • 自动检测现有的DataSource。
    • 将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递。
    • 将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
    • 自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。

    pom.xml重要内容如下:

    <!-- mybatis-starter  -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.1</version>
    </dependency>
    
    <!-- MySQL 连接驱动依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.39</version>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    

    2.application.yml中添加配置

    application.yml中添加数据源和mybatis的配置,内容如下:

    spring:
      #数据源
      datasource:
        url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
        username: root
        password: 123456
        driver-class-name: com.mysql.jdbc.Driver
    #mybatis配置
    mybatis:
      typeAliasesPackage: com.example.springboot.mybatisxml.entity
      mapperLocations: classpath:mapper/*.xml
      config-location: classpath:mybatis-config.xml
    

    3.添加User的映射文件

    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.springboot.mybatisxml.dao.mapper.UserMapper" >
        <resultMap id ="UserMap" type="com.example.springboot.mybatisxml.entity.User">
            <result column="id" property="id"/>
            <result column="name" property="name"/>
            <result column="sex" property="sex"/>
            <result column="password" property="password"/>
            <result column="des" property="des"/>
        </resultMap>
    
        <select id = "queryAllUsers" resultType= "com.example.springboot.mybatisxml.entity.User">
          select * from user
        </select>
    </mapper>
    

    4.添加dao接口

    接口的名字和映射文件的名字相同,接口中方法的名字和要调用的映射文件中的标签的id相同。

    UserMapper.java代码如下:

    public interface UserMapper {
    
        List<User> queryAllUsers();
    }
    

    5.添加访问控制层

    UserController代码如下:

    /**
     * UserController
     *
     * @Author: java_suisui
     *
     */
    @Slf4j
    @RestController
    @RequestMapping("/user")
    public class UserController {
        @Autowired
        private UserService userService;
    
        /**
         * 查询 所有用户
         *
         */
        @GetMapping("/queryAllUsers")
        public List<User> queryAllUsers(){
            return userService.queryAllUsers();
        }
    }
    

    四、测试

    本地打开浏览器,访问http://localhost:8080/user/queryAllUsers,成功后返回如下结果:

    [{"id":1,"name":"张三","password":"123456","sex":0,"des":"无备注"},
    {"id":2,"name":"李四","password":"123456","sex":0,"des":"无备注"}]
    

    到此SpringBoot整合Mybatis(XML配置方式)的功能已经全部实现,有问题欢迎留言沟通哦!

    完整源码地址: https://github.com/suisui2019/springboot-study

    推荐阅读

    1.Java中打印日志,这4点很重要!

    2.SpringBoot集成JWT实现权限认证

    3.一分钟带你了解JWT认证!

    4.SpringBoot中如何优雅的读取yml配置文件?

    5.SpringBoot中如何灵活的实现接口数据的加解密功能?


    限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。
    关注下方公众号即可免费领取:

    Java碎碎念公众号

  • 相关阅读:
    ojdbc14.jar
    Redis
    ftl转成word
    Swagger
    SpringBoot
    条件注解
    Spring SpringMVC MyBatis
    Spring介绍
    Django_mysql表查询
    Django01
  • 原文地址:https://www.cnblogs.com/haha12/p/11839872.html
Copyright © 2011-2022 走看看