Spring Boot 2.x學習筆記:集成JPA

Maven依賴配置

<!-- 引入 spring-boot-starter-web 依賴-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 引入 spring-boot-starter-data-jpa 依賴 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- 引入 mysql-connector-java 依賴 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- 引入 spring-boot-starter-test 依賴 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

application.properties配置

# datasource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc\:mysql\://localhost\:3306/spring_boot_demo_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=adm123456

# Tomcat will use the above plus the following to setup connection pooling
spring.datasource.tomcat.max-active=100
spring.datasource.tomcat.max-idle=8
spring.datasource.tomcat.min-idle=8
spring.datasource.tomcat.initial-size=10
spring.datasource.tomcat.init-s-q-l=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci
# spring.datasource.tomcat.validation-query=
# spring.datasource.tomcat.test-on-borrow=false
# spring.datasource.tomcat.test-on-return=false
# spring.datasource.tomcat.test-while-idle=
# spring.datasource.tomcat.time-between-eviction-runs-millis=
# spring.datasource.tomcat.min-evictable-idle-time-millis=
# spring.datasource.tomcat.max-wait=

# JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)
# spring.jpa.properties.*= # properties to set on the JPA connection
spring.jpa.open-in-view=true
spring.jpa.show-sql=false
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.database=MYSQL
spring.jpa.generate-ddl=false
# spring.jpa.hibernate.naming-strategy= # naming classname
# spring.jpa.hibernate.ddl-auto= # defaults to create-drop for embedded dbs
spring.data.jpa.repositories.enabled=true

SpringBoot啓動類

package com.yuanx;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * 
 * @ClassName: DemoApplication
 * @Description: Demo啓動類
 * @author YuanXu
 * @date 2019年7月5日 下午4:09:33
 *
 */
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoApplication.class);
    }

    /**
     * @Title main
     * @Description Demo啓動入口
     * @author YuanXu
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

Entity實體類

package com.yuanx.demo.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

/**
 * 
 * @ClassName: TUserEntity
 * @Description: t_user
 * @author YuanXu
 * @date 2019年7月8日 16:34
 * 
 */
@Entity
@Table(name = "t_user")
public class TUserEntity implements Serializable {

    private static final long serialVersionUID = 6305237326125691411L;

    /**
     * 用戶ID
     */
    @Id
    @GeneratedValue(generator = "assigned")
    @GenericGenerator(name = "assigned", strategy = "uuid.hex")
    private String id;

    /**
     * 所屬機構ID
     */
    @Column(name = "org_id")
    private String orgId;

    /**
     * 所屬部門ID
     */
    @Column(name = "dept_id")
    private String deptId;

    /**
     * 姓名
     */
    @Column(name = "name")
    private String name;

    /**
     * 賬號
     */
    @Column(name = "code")
    private String code;

    /**
     * 手機號
     */
    @Column(name = "phone")
    private String phone;

    /**
     * 郵箱地址
     */
    @Column(name = "email")
    private String email;

    /**
     * 登錄密碼
     */
    @Column(name = "pwd")
    private String pwd;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getOrgId() {
        return this.orgId;
    }

    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }

    public String getDeptId() {
        return this.deptId;
    }

    public void setDeptId(String deptId) {
        this.deptId = deptId;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCode() {
        return this.code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getPhone() {
        return this.phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPwd() {
        return this.pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

Repository接口類

package com.yuanx.demo.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.yuanx.demo.entity.TUserEntity;

/**
 * 
 * @ClassName: TUserRepository
 * @Description: t_user Repository
 * @author YuanXu
 * @date 2019年7月8日 16:34
 * 
 */
public interface TUserRepository extends JpaRepository<TUserEntity, String> {
    // TODO 自定義方法
}

Service接口類

package com.yuanx.demo.service;

import com.yuanx.demo.entity.TUserEntity;

/**
 * 
 * @ClassName: ITUserService
 * @Description: t_user Service接口
 * @author YuanXu
 * @date 2019年7月8日 16:34
 * 
 */
public interface ITUserService {

    public TUserEntity getOne(String id);

    public TUserEntity save(TUserEntity entity);

    // TODO 自定義接口方法
}

Service實現類

package com.yuanx.demo.service.impl;

import java.util.Optional;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import com.yuanx.demo.entity.TUserEntity;
import com.yuanx.demo.repository.TUserRepository;
import com.yuanx.demo.service.ITUserService;

/**
 * 
 * @ClassName: TUserService
 * @Description: t_user Service
 * @author YuanXu
 * @date 2019年7月8日 16:34
 * 
 */
@Service
public class TUserServiceImpl implements ITUserService {

    /**
     * 日誌記錄對象
     */
    @SuppressWarnings("unused")
    private static Logger log = LoggerFactory.getLogger(TUserServiceImpl.class);

    @Autowired
    private TUserRepository userRepository;

    @Override
    public TUserEntity getOne(String id) {
        if (StringUtils.isEmpty(id)) {
            return null;
        } else {
            Optional<TUserEntity> opt = userRepository.findById(id);
            return opt.isPresent() ? opt.get() : null;
        }
    }

    @Override
    public TUserEntity save(TUserEntity entity) {
        if (entity != null) {
            return userRepository.save(entity);
        } else {
            return null;
        }
    }

    // TODO 自定義方法
}

JUnit測試類

package com.yuanx.test;

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.SpringJUnit4ClassRunner;

import com.yuanx.DemoApplication;
import com.yuanx.demo.entity.TUserEntity;
import com.yuanx.demo.service.ITUserService;

/**
 * 
 * @ClassName: DemoTest
 * @Description: Demo測試類
 * @author YuanXu
 * @date 2019年7月5日 下午4:21:25
 *
 */
@RunWith(value = SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { DemoApplication.class })
public class DemoTest {

    @Autowired
    private ITUserService userService;

    @Test
    public void doTest() {
        TUserEntity user_1 = userService.getOne("4028e3816bd5a547016bd5a55b6e0000");
        if (user_1 != null) {
            System.out.println(String.format("############_1: %s", user_1.getName()));
        } else {
            TUserEntity user = new TUserEntity();
            user.setName("測試用戶");
            user = userService.save(user);
            System.out.println("$$$$:" + user.getId());
        }

        System.out.println("單元測試執行完畢");
    }

}

單元測試結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章