当前位置 博文首页 > 青春季风暴:springboot整合系列----springboot整合mybatis

    青春季风暴:springboot整合系列----springboot整合mybatis

    作者:[db:作者] 时间:2021-09-06 10:21

    ?

    今天我们介绍springboot整合mybatis教程。本文采取全注解的方式来实现springboot与mybatis的整合,不再使用xml配置的方式。因为注解的方式更加简洁高效,这也是spring大力推荐的方式,之后技术的发展也是使用注解的趋势,所以建议你在不影响业务本身的情况下,能使用注解就使用注解。

    如何创建一个springboot项目这里就不在过多介绍,操作步骤非常简单,不会的同学搜索查阅一下即可。

    springboot整合的步骤一般可分为三部分:引入依赖,修改配置文件,修改功能代码。

    在创建一个空的springboot项目以后,我们首先引入maven依赖:

    pom文件:

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>spring-boot-demo-orm-mybatis</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>spring-boot-demo-orm-mybatis</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>com.xkcoding</groupId>
            <artifactId>spring-boot-demo</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <mybatis.version>1.3.2</mybatis.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>spring-boot-demo-orm-mybatis</finalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    其中最重要的部分就是引入了mybatis的starter,以及mysql的驱动包。

    然后我们进行第二步,修改配置文件:

    application.yml

    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/spring-boot-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8
        username: root
        password: root
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.zaxxer.hikari.HikariDataSource
        initialization-mode: always
        continue-on-error: true
        schema:
        - "classpath:db/schema.sql"
        data:
        - "classpath:db/data.sql"
        hikari:
          minimum-idle: 5
          connection-test-query: SELECT 1 FROM DUAL
          maximum-pool-size: 20
          auto-commit: true
          idle-timeout: 30000
          pool-name: SpringBootDemoHikariCP
          max-lifetime: 60000
          connection-timeout: 30000
    logging:
      level:
        com.xkcoding: debug
        com.xkcoding.orm.mybatis.mapper: trace
    mybatis:
      configuration:
        # 下划线转驼峰
        map-underscore-to-camel-case: true
      mapper-locations: classpath:mappers/*.xml
      type-aliases-package: com.xkcoding.orm.mybatis.entity

    然后开始写功能代码:

    先创建一个实体类,供我们测试

    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public class User implements Serializable {
        private static final long serialVersionUID = -1840831686851699943L;
    
        /**
         * 主键
         */
        private Long id;
    
        /**
         * 用户名
         */
        private String name;
    
        /**
         * 加密后的密码
         */
        private String password;
    
        /**
         * 加密使用的盐
         */
        private String salt;
    
        /**
         * 邮箱
         */
        private String email;
    
        /**
         * 手机号码
         */
        private String phoneNumber;
    
        
    }

    然后写mapper文件来操作数据库

    @Mapper
    @Component
    public interface UserMapper {
    
        /**
         * 查询所有用户
         *
         * @return 用户列表
         */
        @Select("SELECT * FROM orm_user")
        List<User> selectAllUser();
    
        /**
         * 根据id查询用户
         *
         * @param id 主键id
         * @return 当前id的用户,不存在则是 {@code null}
         */
        @Select("SELECT * FROM orm_user WHERE id = #{id}")
        User selectUserById(@Param("id") Long id);
    
        /**
         * 保存用户
         *
         * @param user 用户
         * @return 成功 - {@code 1} 失败 - {@code 0}
         */
        int saveUser(@Param("user") User user);
    
        /**
         * 删除用户
         *
         * @param id 主键id
         * @return 成功 - {@code 1} 失败 - {@code 0}
         */
        int deleteById(@Param("id") Long id);
    
    }

    测试的sql语句:

    CREATE TABLE `test`.`<table_name>` (
    	`id` bigint NOT NULL,
    	`name` varchar(32),
    	`password` varchar(50),
    	`salt` varchar(50),
    	`phone` varchar(20),
    	`email` varchar(20),
    	PRIMARY KEY (`id`)
    ) COMMENT='';
    
    
    INSERT INTO `user`(`id`,`name`,`password`,`salt`,`email`,`phone`) VALUES (1, 'user_1', 'ff342e862e7c3285cdc07e56d6b8973b', '412365a109674b2dbb1981ed561a4c70', 'user1@xkcoding.com', '17300000001');
    
    INSERT INTO `user`(`id`,`name`,`password`,`salt`,`email`,`phone`) VALUES (2, 'user_2', '6c6bf02c8d5d3d128f34b1700cb1e32c', 'fcbdd0e8a9404a5585ea4e01d0e4d7a0', 'user2@xkcoding.com', '17300000002');

    然后启动项目,进行测试,发现功能正常。

    于是最基本的springboot集成mybatis完成。

    cs