美文网首页
SpringBoot框架实战3,配置MyBatis

SpringBoot框架实战3,配置MyBatis

作者: 面皮大师 | 来源:发表于2018-06-15 15:18 被阅读174次

    (1)安装数据库

    可以使用mysql也可以使用mariadb,自行安装就可以(可以下载在电脑上安装也可以用Docker安装)。
    连接数据库可以选择用命令行,也可以用IDEA自带的DataBase链接工具,也可以使用MySqlWorkBench,推荐用MySqlWorkBench。

    (2)创建数据库和表

    创建数据库zhoumo,这里选择用utf8字符集

    创建数据库

    简单创建一张表admin

    admin

    (3)项目文件结构介绍

    项目文件结构

    如上图,
    config:中放置一些配置文件和枚举文件等。
    controller:当然放controller了。
    dao:放置数据库操作类。
    model.domain:放从数据库直接查询出来的对象。
    model.dto:放返回给用户的对象。
    model.param:放用户查询时传入的对象。
    service:放复杂操作时,对dao层进行整合。

    备注知识点:
    application.properties可以右键直接修改后缀名改为yaml,yaml可以百度一下,比properties要好用一下,层次更加明了。
    @Data项目中的POJO对象,加上这个注释可以省去Get和Set方法,这是一个IDEA的插件,使用方法很简单,第一在IDEA安装这个插件,第二在POM文件中配置相应的依赖。

    (4)代码介绍

    # 数据库配置
    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: org.mariadb.jdbc.Driver
        name: zhoumo
        url: jdbc:mariadb://127.0.0.1:3306/zhoumo
        username: root
        password: 123456
        druid:
          validationQuery: SELECT 1
          initialSize: 10
          minIdle: 10
          maxActive: 200
          minEvictableIdleTimeMillis: 180000
          testOnBorrow: false
          testWhileIdle: true
          removeAbandoned: true
          removeAbandonedTimeout: 1800
          logAbandoned: true
          poolPreparedStatements: true
          maxOpenPreparedStatements: 100
    
    # 日志
    logging:
      level:
        org.springframework.security: INFO
        com.wuhu.zhoumo: DEBUG
    

    yaml文件,配置数据源(这个里面用到了一些驱动需要在POM文件中添加),打印日志的这一句很重要,可以在控制台打印mybatis的sql语句和参数,很方便调试。

    <?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>
    
        <groupId>com.wuhu</groupId>
        <artifactId>zhoumo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>ZhouMo</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <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>
    
            <!-- mybatis -->
    
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
    
            <!--druid-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.9</version>
            </dependency>
    
            <!--mariadb-->
            <dependency>
                <groupId>org.mariadb.jdbc</groupId>
                <artifactId>mariadb-java-client</artifactId>
                <version>1.5.9</version>
            </dependency>
    
            <!-- mysql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.18</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    
    

    都是一些基础的依赖,了解一下。

    package com.wuhu.zhoumo.dao;
    
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    
    import com.wuhu.zhoumo.model.domain.AdminDO;
    import com.wuhu.zhoumo.model.param.AdminParam;
    
    /**
     * @author sdl
     * @date 2018/6/11
     */
    @Mapper
    public interface AdminDAO {
    
        /**
         * 根据用户名密码查询
         * 
         * @param adminParam 参数
         * @return 对象
         */
        @Select("SELECT * FROM `zhoumo`.`admin` where userName =#{userName} and password =#{password};")
        AdminDO findByUserNameAndPassword(AdminParam adminParam);
    }
    
    

    数据库操作的DAO对象,增删改查都在这里面写。

    package com.wuhu.zhoumo.config;
    
    /**
     * @author sdl
     * @date 2018/6/15
     */
    public enum CodeEnum {
        /**
         * 操作成功
         */
        SUCCESS(true, "1000", "操作成功"),
        /**
         * 数据不存在
         */
        DATA_NOT_FOUND(false, "1001", "数据不存在"),
        /**
         * 数据删除失败
         */
        DELETE_FAILED(false, "1002", "数据删除失败"),
        /**
         * 数据新增失败
         */
        INSERT_FAILED(false, "1003", "数据新增失败"),
        /**
         * 数据更新失败
         */
        UPDATE_FAILED(false, "1004", "数据更新失败"),
        /**
         * 接口访问超时
         */
        SOCKET_TIMEOUT(false, "1005", "接口访问超时"),
        /**
         * 加密失败
         */
        ENCRYPT_ERROR(false, "1006", "加密失败"),
        /**
         * 解密失败
         */
        DECRYPT_ERROR(false, "1007", "解密失败"),
        /**
         * 参数异常
         */
        PARAMS_ERROR(false, "1008", "参数异常"),
        /**
         * 服务器内部错误
         */
        UNKNOWN_ERROR(false, "1009", "服务器内部错误"),
        /**
         * 用户名或密码错误
         */
        LOGIN_ERROR(false, "1010", "用户名或密码错误");
    
        /**
         * 成功状态
         */
        private Boolean success;
        /**
         * CODE
         */
        private String code;
        /**
         * message
         */
        private String message;
    
        /**
         * 构造方法
         */
        CodeEnum(Boolean success, String code, String message) {
            this.success = success;
            this.code = code;
            this.message = message;
        }
    
        /**
         * 结果
         *
         * @return 操作结果
         */
        public Boolean success() {
            return this.success;
        }
    
        /**
         * 编号
         *
         * @return 操作结果编号
         */
        public String code() {
            return this.code;
        }
    
        /**
         * 说明
         *
         * @return 操作结果说明
         */
        public String message() {
            return this.message;
        }
    }
    
    

    枚举统一定义系统中的各种错误。

    package com.wuhu.zhoumo.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.wuhu.zhoumo.config.CodeEnum;
    import com.wuhu.zhoumo.dao.AdminDAO;
    import com.wuhu.zhoumo.model.domain.AdminDO;
    import com.wuhu.zhoumo.model.dto.AdminDTO;
    import com.wuhu.zhoumo.model.param.AdminParam;
    
    /**
     * @author sdl
     * @date 2018/6/12
     */
    @RestController
    public class AdminController {
    
        /**
         * DAO
         */
        @Autowired
        private AdminDAO adminDAO;
    
        /**
         * 登录
         * 
         * @param adminParam 登录参数
         * @return
         */
        @GetMapping("login")
        public AdminDTO login(AdminParam adminParam) {
            AdminDTO adminDTO = null;
            AdminDO adminDO = adminDAO.findByUserNameAndPassword(adminParam);
            if (null != adminDO) {
                adminDTO = new AdminDTO(CodeEnum.SUCCESS);
            } else {
                adminDTO = new AdminDTO(CodeEnum.LOGIN_ERROR);
            }
            return adminDTO;
        }
    }
    
    

    controller,传入用户名密码,放回状态。

    package com.wuhu.zhoumo.model.domain;
    
    import lombok.Data;
    
    /**
     * @author sdl
     * @date 2018/6/12
     */
    @Data
    public class AdminDO {
    
        /**
         * id
         */
        private int id;
    
        /**
         * 用户名
         */
        private String userName;
    
        /**
         * 密码
         */
        private String password;
    
    }
    
    
    package com.wuhu.zhoumo.model.dto;
    
    import com.wuhu.zhoumo.config.CodeEnum;
    
    import lombok.Data;
    
    /**
     * @author sdl
     * @date 2018/6/11
     */
    @Data
    public class AdminDTO extends BaseDTO {
    
        /**
         * 构造方法
         *
         * @param codeEnum
         */
        public AdminDTO(CodeEnum codeEnum) {
            super(codeEnum);
        }
    }
    
    
    package com.wuhu.zhoumo.model.dto;
    
    import com.wuhu.zhoumo.config.CodeEnum;
    
    import lombok.Data;
    
    /**
     * @author sdl
     * @date 2018/6/15
     */
    @Data
    public class BaseDTO {
    
        /**
         * 成功状态
         */
        private Boolean success;
        /**
         * CODE
         */
        private String code;
        /**
         * message
         */
        private String message;
    
        /**
         * 构造方法
         */
        public BaseDTO(CodeEnum codeEnum) {
            this.code = codeEnum.code();
            this.success = codeEnum.success();
            this.message = codeEnum.message();
        }
    }
    
    
    package com.wuhu.zhoumo.model.param;
    
    import lombok.Data;
    
    /**
     * @author sdl
     * @date 2018/6/12
     */
    @Data
    public class AdminParam {
    
        /**
         * 用户名
         */
        private String userName;
    
        /**
         * 密码
         */
        private String password;
    }
    
    

    (4)项目运行

    运行项目

    项目地址:https://github.com/daleiwang/zhoumo.git

    相关文章

      网友评论

          本文标题:SpringBoot框架实战3,配置MyBatis

          本文链接:https://www.haomeiwen.com/subject/evuheftx.html