zoukankan      html  css  js  c++  java
  • Spring cloud:订单微服务-数据层

    环境

    1. spring cloud Edgware.SR6
    2. jdk 7
    3. sts 4.6.0
    4. mysql 5.7

    背景

    搭建订单微服务的环境。

    搭建步骤

    建立数据库和数据表

    新建如下的表结构:

    spring-cloud-order

    建表语句:

    -- spring_cloud_order.order_info definition
    
    CREATE TABLE `order_info` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(100) NOT NULL,
      `amount` varchar(100) NOT NULL,
      `status` enum('CREATED','PAID','DELETED') NOT NULL,
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `update_time` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
    

    插入数据:

    INSERT INTO spring_cloud_order.order_info (name,amount,status,create_time,update_time) VALUES 
    ('新订单测试','4.88','CREATED','2020-04-13 06:22:14.0','2020-04-13 14:22:00.0');
    

    新增 pom.xml 依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    

    定义实体类

    package jiangbo.springcloud.entity;
    
    import java.util.Date;
    
    public class OrderInfo {
    
        private long id;
    
        private String name;
    
        private String amount;
    
        private OrderStatusEnum status;
    
        private Date createTime;
    
        private Date updateTime;
    }
    
    package jiangbo.springcloud.entity;
    
    public enum OrderStatusEnum {
    
        /** 新建 */
        CREATED,
    
        /** 已支付 */
        PAID,
    
        /** 已删除 */
        DELETED
    }
    

    定义数据访问层

    package jiangbo.springcloud.dao;
    
    import java.util.List;
    
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    import org.springframework.stereotype.Repository;
    
    import jiangbo.springcloud.entity.OrderInfo;
    
    @Repository
    public class OrderInfoDao {
    
        private static final RowMapper<OrderInfo> ROW_MAPPER = new BeanPropertyRowMapper<>(OrderInfo.class);
    
        private static final String QUERY_ALL_SQL = "select * from order_info";
    
        private JdbcTemplate jdbcTemplate;
    
        public OrderInfoDao(JdbcTemplate jdbcTemplate) {
    
            this.jdbcTemplate = jdbcTemplate;
        }
    
        public List<OrderInfo> queryAllOrders() {
    
            return jdbcTemplate.query(QUERY_ALL_SQL, ROW_MAPPER);
        }
    }
    

    配置信息

    server:
      port: 4410
    
    spring:
      application:
        name: order
      
      datasource:
        url: jdbc:mysql://localhost/spring_cloud_order?useUnicode=true&characterEncoding=utf-8&useSSL=false
        driver-class-name: com.mysql.jdbc.Driver
        username: root
        password: jiangbo
    

    验证

    建立测试

    package jiangbo.springcloud.dao;
    
    import static org.junit.Assert.assertFalse;
    
    import java.util.List;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import jiangbo.springcloud.entity.OrderInfo;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class OrderInfoDaoTest {
    
        @Autowired
        private OrderInfoDao orderInfoDao;
    
        @Test
        public void testQueryAllOrders() {
    
            List<OrderInfo> allOrders = orderInfoDao.queryAllOrders();
            assertFalse(allOrders.isEmpty());
        }
    }
    
    

    运行

    运行单元测试,通过测试,则订单微服务的数据层环境搭建成功。

    附录

    pom.xml

    <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>
        <parent>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</artifactId>
            <version>Edgware.SR6</version>
        </parent>
    
        <groupId>jiangbo.springcloud</groupId>
        <artifactId>04spring-cloud-order</artifactId>
        <version>1.0.0</version>
        <packaging>jar</packaging>
    
        <properties>
            <java.version>1.7</java.version>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>provided</scope>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    
  • 相关阅读:
    命令模式
    js代理模式,处理缓存
    js设计模式之策略模式
    查看并修改签名证书keystore的密码,alias别名等相关参数
    【fiddler】配置代理后个别app连不上网的问题
    使用Fiddler域名过滤、断点、小技巧绕过前端验证
    App上架各大应用市场的地址及操作方法
    获取APK获取APK证书MD5、SHA1、SHA256等秘钥
    Python一切皆对象
    WEB基础之布局与定位
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/12682193.html
Copyright © 2011-2022 走看看