sell01 环境搭建、编写持久层并进行测试

1 环境配置

  JDK  1.8

  MAVEN  3.5

  MYSQL  5.7

  VirtualBox  5.1

2 搭建MYSQL环境

  下载 VM 和 虚拟镜像文件

  虚拟镜像文件:点击前往

  技巧01:安装完virtualBox后直接点击下载好的镜像文件就会自动调到导入镜像文件页面

  问题01:启动虚拟机时启动失败,提示物理机的64位内核没有开启

  解决01:进入系统bios页面,开启虚拟内核即可(详情请问问度娘)

# 虚拟机说明文档
VirtualBox-5.1.22
虚拟机系统 centos7.3
账号 root
密码 123456
#### 包括软件
* jdk 1.8.0_111
* nginx 1.11.7
* mysql 5.7.17
* redis 3.2.8

##### jdk
* 路径 /usr/local/jdk1.8.0_111

##### nginx
* 路径 /usr/local/nginx
* 启动 nginx
* 重启 nginx -s reload

##### mysql
* 配置 /etc/my.conf
* 账号 root
* 密码 123456
* 端口 3306
* 启动 systemctl start mysqld
* 停止 systemctl stop mysqld

##### redis
* 路径 /usr/local/redis
* 配置 /etc/reis.conf
* 端口 6379
* 密码 123456
* 启动 systemctl start redis
* 停止 systemctl stop redis

##### tomcat
* 路径 /usr/local/tomcat
* 启动 systemctl start tomcat
* 停止 systemctl stop tomcat

镜像文件说明

3 编写实体类

  3.1 注解介绍

    @Table(name = "product_category")  实体类和表明对应

    @Entity  该类是一个实体类

    @DynamicUpdate  动态刷新

    @Data  自动为实体类生成get/set/tostring方法

    @Id  主键

    @GeneratedValue  主键自增  

    @Column  指定实体类属性和数据库字段保持一致

    问题01:使用 @Data 后打包后会自动生成相应的方法,但是在IDEA环境运行时需要下载一个插件

    解决01:插件安装教程

     问题02:使用@Data注解时需要导入相应的jar包

    解决02:

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

    问题03:当实体类名和数据库表明不一致时需要利用注解实现一一对应

     解决03:利用@Table指定数据库表名

     问题04:当实体类属性名和数据库表的字段名不一致时需要利用注解实现一一对应

        解决04:利用@Column指定数据库字段名

  3.2 实体类代码

package cn.xinagxu.sell.dataObject;

import lombok.Data;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;

/**
 * 类目表实体对象
 */
@Table(name = "product_category")
@Entity
@DynamicUpdate  // 实现动态刷新(例如:当数据库中的更新时间字段是自动刷新时,如果修改数据时传入了这个字段的信息时如果不在实体类中添加这个注解那么数据库对该字段的自动更新就会失效)
@Data // 该注解会自动生成一些get/set/tostring方法
public class ProductCategory {

    /** 类目ID */
    @Id
    @GeneratedValue
    private Integer categoryId;
    /** 类目名名字 */
    private String categoryName;
    /** 类目编号 */
    private Integer categoryType;
    /** 类目创建时间 */
    private Date createTime;
    /** 类目更新时间 */
    private Date updateTime;

    public ProductCategory() {
    }

}

实体类源代码

4 编写Dao层

  4.1 引入数据库相关jar包

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

  4.2 配置数据库连接

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://172.25.129.244/sell?characterEncoding=utf-8&useSSL=false
  jpa:
    show-sql: true

  技巧01:持久层必须继承 JpaRepository,继承了该接口后就不用在持久层接口添加注解来设置bean了,因为父类已经实现了

  技巧02:JPA教程

package cn.xinagxu.sell.repository;

import cn.xinagxu.sell.dataObject.ProductCategory;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface ProductCategoryRepository extends JpaRepository<ProductCategory, Integer> {
    /** 根据一个类型列表去查询类目类型在这个列表中的类目 */
    List<ProductCategory> findByCategoryTypeIn(List<Integer> categoryTypeList);
}

持久层接口源代码

5 持久层测试类 

package cn.xinagxu.sell.repository;

import cn.xinagxu.sell.dataObject.ProductCategory;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
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 java.util.Arrays;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class ProductCategoryRepositoryTest {

    @Autowired
    private ProductCategoryRepository productCategoryRepository;

    /** 根据主键查询数据 */
    @Test
    public void findOneTest() {
        log.error("===自定义错误日志===");
        log.warn("===自定义警告日志===");
        log.info("===自定义信息日志===");
        log.debug("===自定义调试日志===");
        ProductCategory productCategory = productCategoryRepository.findOne(1);
        System.out.println(productCategory);
    }

    /** 插入一条数据(主键、创建时间、更新时间是自动实现的不必传入) */
    @Test
    public void saveOneTest() {
        ProductCategory productCategory = new ProductCategory();
        productCategory.setCategoryName("女生的最爱");
        productCategory.setCategoryType(3);
        ProductCategory result = productCategoryRepository.save(productCategory);
        Assert.assertNotNull(result); // 利用断言判断:如果结果不为null就表明正确
//        Assert.assertNotEquals(null, result);  // 利用断言判断:如果结果不为null就表明正确
    }

    /** 根据主键去更新一个条数据 */
    @Test
    public void updateOneTest() {
        ProductCategory productCategory = productCategoryRepository.findOne(2);
        productCategory.setCategoryName("三少");
        productCategoryRepository.save(productCategory);
    }

    /** 根据类型列表查询 */
    @Test
    public void findByCategoryTypeTest() {
        List<Integer> typeList = Arrays.asList(1,2,3,4);
        List<ProductCategory> results = productCategoryRepository.findByCategoryTypeIn(typeList);
        Assert.assertNotEquals(0, results.size());
    }

}

时间: 2024-08-02 21:00:24

sell01 环境搭建、编写持久层并进行测试的相关文章

bboss持久层快速入门教程

bboss持久层快速入门教程,快速搭建bboss持久层的开发环境,并编写一个简单的实例,实例中涉及以下功能点: 动态启动数据源(基于apache dbcp2连接池组件) 做一个简单的增删改查操作例子 持久层环境搭建 首先搭建持久层demo开发环境,通过svn下载持久层eclipse开发工程: https://github.com/bbossgroups/bestpractice/trunk/persistent 下载完毕后导入eclipse即可: 启动一个名称叫test的oracle数据源: S

Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)

一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端,本地在进行拉流播放的流程.所以这个过程中,我们需要首先来把服务端这个中间环节的工作搞定,后续再弄推流和拉流功能.现在推流大部分都是使用RTMP/HLS协议的,关于这两个协议的区别: 所以我们服务端搭建就需要用这两个协议,不过本文放心了,不会去手动的编写一套协议代码的,谁叫这个世界属于开源呢? 需要的

TestNG+Maven+IDEA环境搭建

TestNG+Maven+IDEA环境搭建 TestNG+Maven+IDEA环境搭建 前言: 主要进行TestNG测试环境的搭建 所需环境: 1.IDEA UItimate 2.JDK 3.Maven 一.创建工程 File –>new –>Project–>next–>finish 上面两项名称自己定义 最后工程目录  二.导入相关依赖包和插件 1)添加testng依赖包 在pom.xml文件添加 <dependencies> <dependency>

UNIX环境高级编程学习环境搭建---apue.h

本菜刚刚学习UNIX下高级编程,无奈搭建本书编程环境时遇到不少问题.幸好网上有各种大神的解决办法让我最终解决了问题.在这里感谢为LINUX开源操作系统奋斗的大神. 不过话说回来,网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说,有些过时,因为很对针对linux的make文件已经改变了很多. 话不多说,下面就来看看具体的搭建过程:(本人用的操作系统是ubuntu 14.04LTS) 1.在网上下载书中源代码,点击打开链接 2.解压文件:tar -zxvf *.tar.gz 3.

Hadoop学习笔记(4) ——搭建开发环境及编写Hello World

Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclipse方便. 下载 进入官网:http://eclipse.org/downloads/. 找到相应的版本进行下载,我这里用的是eclipse-SDK-3.7.1-linux-gtk版本. 解压 下载下来一般是tar.gz文件,运行: $tar -zxvf eclipse-SDK-3.7.1-linu

Struts2环境搭建以及helloworld编写

Struts是一个经典的Java Web开发框架.现在我们编写一个简易的helloworld界面.   Struts的环境搭建比较简单,加载相应的jar包即可. 我这里的开发环境是windows7 + Myeclipse10.0 Struts2采用的是2.2.1.1版本   1.加载Struts2的必备jar包,我这里是6个,还有另外的两个jar文件. 这六个分别是: 1.commons_fileupload-1.2.1.jar 2.commons-io_1.3.2.jar 3.commons-

hadoop实战–搭建eclipse开发环境及编写Hello World

原创文章,转载请注明: 转载自工学1号馆 欢迎关注我的个人博客:www.wuyudong.com, 更多云计算与大数据的精彩文章 1.在eclise中安装hadoop的插件并配置 在上篇文章<编译hadoop eclipse的插件(hadoop1.0)>,已经介绍过怎样编译基于hadoop1.0的eclipse插件 将jar包放在eclipse安装目录下的plugins文件夹下.然后启动eclipse 进入后,在菜单window->Rreferences下打开设置: 点击“Ant” 出现

spring4学习:环境搭建和编写HelloWorld

spring4环境搭建: 1.创建一个java project: 2.创建lib目录:导入下图的jar包,其中common-logging.jar不是spring本身包含的包: 3.把jar包 add to build path; 4.建立一个HelloWorld类: package com.ksk.spring; public class HelloWorld {     private String userName;          public void setUserName(Str

Hadoop基础教程之搭建开发环境及编写Hello World

整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclipse方便. 1.下载 进入官网:http://eclipse.org/downloads/. 找到相应的版本进行下载,我这里用的是eclipse-SDK-3.7.1-linux-gtk版本. 2.解压 下载下来一般是tar.gz文件,运行: $tar -zxvf eclipse-SDK-3.7.1-linux-gtk.tar.gz -c ~/Tool 这里Tool是需要解