zoukankan      html  css  js  c++  java
  • druid+mybaits简单集成

    在前面的文章中,我们对springboot开发中一些常用的框架进行了集成,但是发现还是存在一些问题,比如druid还需要比较长的固有配置,实际上druid官方是提供了相关的starters包的,内部采用默认配置。

    什么是springboot的starters包?

    SpringBoot Starters是基于约定优于配置的理念来设计的,像之前的集成中还是有一定的配置量的,当然我们只是用Java代码在进行配置,SpringBoot Starters中有两个核心组件,一个是自动配置代码,一个是自动配置模块和其它有用的相关依赖。

    这也就意味着,我们只要引入某个Starters就可以使相关框架拥有默认配置的能力,除非我们需要特定配置,一般情况下我们只需要少部分配置或者不配置就可以使用相关的组件了。

    Druid是提供了相关的Starters,我们只需要引入Starters到pom.xml就可以直接使用了

    通过Starters包集成Druid

    这次我们用idea内部的构建工具来创建一个SpringBoot项目

    这个时候我们已经完成了一大半工作了,接着我们在pom.xml引入druid的Starters

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.10</version>
    </dependency>
    
    

    数据库我们使用MySQL的所以在引入一个MySQL的连接驱动

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    

    接着配置一下application.yml就基本完成了

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
        druid:
          initial-size: 3
          min-idle: 3
          max-active: 10
          max-wait: 60000
          stat-view-servlet:
            login-username: admin
            login-password: admin
          filter:
            stat:
              log-slow-sql: true
              slow-sql-millis: 2000
    
    

    我们直接启动项目
    访问http://localhost:8080/druid/login.html地址,就可以看见druid的监控界面了
    然后输入配置文件中配置的用户名和密码进行登录admin

    可以看到我们项目的基本信息以及数据源。
    这样比上次的druid集成要简单很多对吧
    我们在进一步集成mybatis

    集成mybatis

    引入mybatis

    先引入xml节点

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    
    

    为了方便测试先建个表

    /*
     Navicat Premium Data Transfer
    
     Source Server         : localhost_3306
     Source Server Type    : MySQL
     Source Server Version : 50643
     Source Host           : localhost:3306
     Source Schema         : demo
    
     Target Server Type    : MySQL
     Target Server Version : 50643
     File Encoding         : 65001
    
     Date: 18/03/2019 14:20:08
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    ---
    -- Table structure for test_user
    ---
    
    DROP TABLE IF EXISTS test_user;
    CREATE TABLE test_user  (
      id int(255) NOT NULL AUTO_INCREMENT COMMENT '主键',
      user_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
      password varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
      PRIMARY KEY (id) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    ---
    -- Records of test_user
    ---
    
    INSERT INTO test_user VALUES (1, '用户', '123456');
    INSERT INTO test_user VALUES (2, '胡汉三', 'hhs123456');
    INSERT INTO test_user VALUES (3, '王五', '123456');
    INSERT INTO test_user VALUES (4, 'test', 'test');
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    
    

    这个表是建立在我配置文件指定的数据库下的,请注意一下

    配置mybatis

    mybatis:
      mapper-locations: classpath:mappers/*/Mapper.xml
      type-aliases-package: com.ccsert.spdruid.*.model
      configuration:
        map-underscore-to-camel-case: true
    
    logging:
      file: logs/mass.log
      level:
        org.springframework: info
        com.ccsert: DEBUG
    
    

    配置一下mybatis和log日志以及sql打印
    然后在resources下建立mappers用来存放mapper,xml文件,这些步骤其实和上次的集成是一样的基本没区别
    接着建立一个test包
    然后在test包建立mapper,service,model,controller四个包准备工作基本做完了

    mybatis使用

    开始使用,先在model下建立TestUser类
    emmm用一下lombok,引入一下

    关于lombok,idea支持需要安装相应的插件
    按Ctrl+Alt+S,唤出设置
    点击Plugins搜索Lombok
    然后安装Lombok Plugin插件,接着重启idea,这样idea就支持lombok注解了。(上次没有讲,真是抱歉)
    接着刚才

    package com.ccsert.spdruid.test.model;
    
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    
    @Getter@Setter@ToString
    public class TestUser {
        private Integer Id;
        private String userName;
        private String password;
    }
    
    

    然后我们写mapper
    在mapper建立一个TestUserMapper接口

    package com.ccsert.spdruid.test.mapper;
    
    import com.ccsert.spdruid.test.model.TestUser;
    import org.apache.ibatis.annotations.Mapper;
    
    import java.util.List;
    
    @Mapper
    public interface TestUserMapper {
    
        List<TestUser> getall();
        
        TestUser getById(Integer id);
        
        int save(TestUser testUser);
    
    }
    

    然后我们写Service层
    在service包下建立UserTestService接口
    这里就写一个根据id查用户和查询所有以及新增用户三个方法

    package com.ccsert.spdruid.test.service;
    
    import com.ccsert.spdruid.test.model.TestUser;
    
    import java.util.List;
    
    public interface TestUserService {
        List<TestUser> getall();
        TestUser getById(Integer id);
        int save(TestUser testUser);
    }
    
    
    

    然后在service下建一个impl包,在impl包下创建一个TestUserService的实现类TestUserServiceImpl

    package com.ccsert.spdruid.test.service.impl;
    
    import com.ccsert.spdruid.test.mapper.TestUserMapper;
    import com.ccsert.spdruid.test.model.TestUser;
    import com.ccsert.spdruid.test.service.TestUserService;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    @Service
    public class TestUserServiceImpl implements TestUserService {
        @Resource
        private TestUserMapper testUserMapper;
    
        @Override
        public List<TestUser> getall() {
            return testUserMapper.getall();
        }
        
        @Override
        public TestUser getById(Integer id) {
            return testUserMapper.getById(id);
        }
        
        @Override
        public int save(TestUser testUser) {
            return testUserMapper.save(testUser);
        }
    
    }
    

    接下来就是写xml了,在mappers目录下建立一个TestUser目录,然后在该目录下建立一个TestUserMapper.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.ccsert.spdruid.test.mapper.TestUserMapper" >
        <resultMap id="BaseResultMap" type="com.ccsert.spdruid.test.model.TestUser" >
            <id column="id" property="Id"  />
            <result column="user_name" property="userName"/>
            <result column="password" property="password" />
        </resultMap>
    
        <select id="getall" resultMap="BaseResultMap">
         SELECT
            id,user_name,password
        FROM
            test_user
        </select>
        
        <select id="getById" parameterType="Integer"  resultMap="BaseResultMap">
         SELECT
            id,user_name,password
        FROM
            test_user
        WHERE id=#{id}
        </select>
        
        <insert id="insert" parameterType="com.ccsert.spdruid.test.model.TestUser" >
    
       INSERT INTO
               save
               (user_name,password)
           VALUES
               (#{user_name}, #{password})
    </insert>
    </mapper>
    
    

    建立TestUserController类

    package com.ccsert.spdruid.test.controller;
    
    import com.ccsert.spdruid.test.model.TestUser;
    import com.ccsert.spdruid.test.service.TestUserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    public class TestUserController {
        @Autowired
        private TestUserService testUserService;
    
        @GetMapping("/getall")
        public List<TestUser> getAll(){
            return testUserService.getall();
        }
        
        @GetMapping("/getById/{id}")
        public TestUser getById(@PathVariable Integer id){
            return testUserService.getById(id);
        }
        
        @PostMapping("/save")
        public int save(TestUser testUser){
            return testUserService.save(testUser);
        }
    
    }
    
    

    这里用到RESTful api的设计风格使请求地址看起来更美观
    测试使用
    启动项目然后用Restlet Client - REST API Testing插件测试一下,Restlet Client - REST API Testing是一款chrome的扩展插件,功能类似于postman,建立大家可以装一个。需要翻墙,到时候我会把相关插件工具发在群里。
    先测试getall,这里geitall必须使用get请求

    然后接着是getById,这里传参的时候只需要把id放在请求路径后面就可以了,比如getById/1,同样也必须是get请求

    接着是save,save必须是post请求,保存用户成功后会返回一个条数

    因为id是自增长所以不需要传入,去数据库查看一下是否有该数据

    可以看到该数据已经成功插入了。

  • 相关阅读:
    Lightoj 1321 Sending Packets(Bellman-Ford)
    Lightoj 1281 New Traffic System (记忆化Dijkstra)
    NBUT TNT #1 题解报告
    UVA 11624 BFS
    FZU 2150 枚举+BFS
    POJ 3126 BFS
    POJ 3279 DFS
    POJ 1062 dijkstra + 枚举
    lightoj 1123 增量最小生成树
    python 常用算法及解析
  • 原文地址:https://www.cnblogs.com/ccsert/p/12249233.html
Copyright © 2011-2022 走看看