Spring Boot 集成 JPA 的步骤

配置依赖

compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '1.5.2.RELEASE'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.41'

编写配置文件

1、JPA 的配置

@EnableJpaRepositories(basePackages = "com.liwei.dao")
@EntityScan(basePackages = "com.liwei.entity")
public class JpaConfig {
}

2、数据库连接的配置和其它配置

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/spring-boot-security?useUnicode=true&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update

创建数据库的 SQL 语句:

CREATE DATABASE `spring-boot-security` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

编写 dao 层和 entity 的代码

public interface UserRepository extends JpaRepository<User, Long> {
User findByUserName(String userName);
}
public interface UserRolesRepository extends JpaRepository<UserRole,Long> {

}
@Table(name = "t_user")
@Entity
public class User { private Long userId;
private String userName;
private String password;
private String email;
private int enabled; @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
public Long getUserId() {
return userId;
} public void setUserId(Long userId) {
this.userId = userId;
} @Column(name = "user_name")
public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public int getEnabled() {
return enabled;
} public void setEnabled(int enabled) {
this.enabled = enabled;
} public User() {
} public User(Long userId, String userName, String password, String email, int enabled) {
this.userId = userId;
this.userName = userName;
this.password = password;
this.email = email;
this.enabled = enabled;
} @Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
", enabled=" + enabled +
'}';
}
}
@Table(name = "t_user_roles")
@Entity
public class UserRole { private Long userRoleId; private Long userId; private String role; @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_role_id")
public Long getUserRoleId() {
return userRoleId;
} public void setUserRoleId(Long userRoleId) {
this.userRoleId = userRoleId;
} @Column(name = "user_id")
public Long getUserId() {
return userId;
} public void setUserId(Long userId) {
this.userId = userId;
} public String getRole() {
return role;
} public void setRole(String role) {
this.role = role;
}
}

为了便于测试,我们还编写了服务层的方法:

public interface IUserService {

    User findByUserName(String userName);
}
@Service
public class UserServiceImpl implements IUserService { @Autowired
private UserRepository userRepository; @Override
public User findByUserName(String userName) {
return userRepository.findByUserName(userName);
}
}

编写测试代码

testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.5.2.RELEASE'
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootSecurityApplication.class)
public class IUserServiceTest { @Autowired
private IUserService userService;
@Autowired
private UserRepository userRepository; @Test
public void initData() throws Exception {
User user = new User();
user.setUserName("liwei");
user.setPassword("123456");
user.setEmail("121088825");
user.setEnabled(1);
User user1 = userRepository.save(user);
System.out.println(user1);
} @Test
public void findByUserName() throws Exception {
User user = userService.findByUserName("liwei");
System.out.println(user); } }

Spring Boot 集成 JPA 的步骤的更多相关文章

  1. Spring Boot集成JPA的Column注解命名字段无效的问题

    偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名. Spring Boot版本:1.5.4.release 数据表: id int, userNam ...

  2. spring boot 集成 Mybatis,JPA

    相对应MyBatis, JPA可能大家会比较陌生,它并不是一个框架,而是一组规范,其使用跟Hibernate 差不多,原理层面的东西就不多讲了,主要的是应用. Mybatis就不多说了,SSM这三个框 ...

  3. MyBatis初级实战之一:Spring Boot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. 【实验一 】Spring Boot 集成 hibernate & JPA

    转眼间,2018年的十二分之一都快过完了,忙于各类事情,博客也都快一个月没更新了.今天我们继续来学习Springboot对象持久化. 首先JPA是Java持久化API,定义了一系列对象持久化的标准,而 ...

  5. (37)Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 写后感:博主写这么一系列文章也不容易啊,请评论支持下. 如果看过我之前(35)的文章这一篇的文章就会很简单,没有什么挑战性了. 那么我们先说说这一篇文 ...

  6. (35)Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 本文章牵涉到的技术点比较多:Spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对 ...

  7. Spring Boot 集成 FreeMarker 详解案例(十五)

    一.Springboot 那些事 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配 ...

  8. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  9. Spring Boot集成Spring Data Reids和Spring Session实现Session共享

    首先,需要先集成Redis的支持,参考:http://www.cnblogs.com/EasonJim/p/7805665.html Spring Boot集成Spring Data Redis+Sp ...

随机推荐

  1. PythonDay08

    第八章 今日内容 文件操作 读操作 写操作 +操作 其他操作 读操作 r模式f = open('test.txt', mode='r', encoding='utf-8')print(f.read() ...

  2. 区块链开源实现hyperledger fabric架构详解

    hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM.Intel.各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量.本文中我们依次讨论:区块链 ...

  3. Animator通过按键切换动画不及时,动画延时切换问题

    再unity3D版本为Unity 5.2.1f1 (64-bit),再设置动画切换时有一个Has Exit Time属性,由于勾上了这个的原因

  4. Zookeeper入门概要

    ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现.ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集 ...

  5. Django signal 信号量

    参考博客:方法发及使用场景:https://my.oschina.net/linktime/blog/151871 部分源码解析:https://www.cnblogs.com/shizhengwen ...

  6. 前端为什么要学习 Selenium

    如果你正在阅读本文,那么可能希望从手动测试升级为自动化测试.你是对的,因为你需要学习 Selenium.我这样说是因为自动化测试已经风靡全球,而且业界正很缺少 Selenium 认证专家. 你可能还想 ...

  7. 欢迎使用Markdown编辑器

    #欢迎使用Markdown编辑器 你好 ,这是我第一次使用Markdown编辑器所展示的页面.如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识. ...

  8. bash_profile和bashrc区别

    [.bash_profile 与 .bashrc 的区别].bash_profile is executed for login shells, while .bashrc is executed f ...

  9. u-boot 用哪个lds链接脚本

    顶层Makefile文件中 : ifndef LDSCRIPT    #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug    ifd ...

  10. IPv6是未来趋势?部署IPv6有什么技术障碍?

    没有人在用IPv6?我相信有很多人在谈话中听到了类似的内容,虽然很难说服这些人,越来越多的组织正在部署IPv6,特别是当采用率在20岁时如此缓慢到目前为止存在的一年,这些实例至少让我有机会让他们再次思 ...