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. 替换url不刷新页面

    今天碰到一个有趣的问题, 从其他站点登录后,放回了一个token, 但是我切换了路由之后token还在, 路由直接跟在了token参数后面, 后面先利用location.href替换掉原来的连接, 但 ...

  2. [LeetCode] 137. 只出现一次的数字 II

    题目链接 : https://leetcode-cn.com/problems/single-number-ii/ 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三 ...

  3. 好用的 Puppeteer 辅助工具 Puppeteer Recorder

    Puppeteer Puppeteer 是一个Node库,它提供了一个高级API来控制DevTools协议上的Chrome或Chromium,常用于爬虫.自动化测试等,你在浏览器手动完成的大多数事情都 ...

  4. 手摸手教你如何在 Python 编码中做到小细节大优化

    手摸手教你如何在 Python 编码中做到小细节大优化 在列表里计数 """ 在列表里计数,使用 Python 原生函数计数要快很多,所以尽量使用原生函数来计算. &qu ...

  5. Java——BufferedImage操作实例

    通过鼠标位置改变图像ColorModel对象索引,从而实现图像像素自动变化 BufferedImage 由图像数据的 ColorModel 和 Raster 组成.Raster 的 SampleMod ...

  6. vue : 无法加载文件 C:\Users\XXX\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本

    问题: 使用命令行安装完成vue/cli后,使用vue ui无法创建demo vue : 无法加载文件 C:\Users\yangx\AppData\Roaming\npm\vue.ps1,因为在此系 ...

  7. 利用webSocket实现浏览器中多个标签页之间的通信

    webSoket用来实现双向通信,客户端和服务端实时通信. webSoket优点和缺点? 优点:对于前端来说,使用简单,功能灵活,如果部署了webSocket服务器,可以实现实时通信. 缺点:需要服务 ...

  8. 常用技术blog

    淘宝核心系统团队 http://csrd.aliapp.com/ 淘宝搜索技术博客 http://www.searchtb.com 淘宝量子恒道官方博客 http://blog.linezing.co ...

  9. 几个有关FPGA的概念

    <数字设计——原理和实践>(John F.Wakerly)的书 FPGA同步时钟设计 简单说就是 一个系统中(或系统中的一部分)都采用同一个时钟触发.系统中的(D)触发器全部都连接到一个时 ...

  10. Codeforces 955 LR询问 多次幂处理

    A 模拟题 #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) ...