文档库 最新最全的文档下载
当前位置:文档库 › spring-jpa-mysql

spring-jpa-mysql

spring-jpa-mysql
spring-jpa-mysql

在Spring Boot中使用JPA和MySQL

最近项目中需要使用到MySQL数据库,在此记录一下Spring Boot中使用JPA进行数据访问的基本过程。本文的基本开发环境如下:spring-boot-1.4.2&jdk-1.8&spring-data-jpa-1.10.5&mysql-connector-java-5.1.40

1. pom.xml中加入JPA及MySQL依赖

org.springframework.boot

spring-boot-starter-data-jpa

mysql

mysql-connector-java

runtime

2. 配置MySQL连接及JPA参数我的配置项是通过application.yml文件进行设置的,如下:

#yml里面支持的配置项参数还有很多,可以在yml文件中输入关键词后查看相关用法,这里就不解释了spring:

datasource:

url: jdbc:mysql://localhost:3306/demo

username: root

password: 123456

dbcp:

validation-query: SELECT 1

test-while-idle: true

jpa:

hibernate:

ddl-auto: create-drop

naming:

strategy: org.hibernate.cfg.ImprovedNamingStrategy

properties:

hibernate:

dialect: org.hibernate.dialect.MySQL5Dialect

show-sql: true

Spring Boot应用在启动时会自动去解析此配置文件里面的内容,不需要我们再手动显式的在Java或者XML中进行配置了。

3. 创建实体类创建一个简单的实体类用于演示:

@Entity

@Table(name ="label")

public class Label{

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private long id;

/** * 标签的

内容

*/

private String label;

public String getLabel()

{ return label;

}

public void setLabel(String id, String label)

{ https://www.wendangku.net/doc/b113420505.html,belId = id;

https://www.wendangku.net/doc/b113420505.html,bel = label;

}

}

4. 创建实体类的CrudRepository

@Transactional

public interface LabelRepository extends MongoRepository{

/**

*根据标签文本查询标签是否已存在

*@param label 标签文本

*@return

*/

Label findByLabel(String label);

}

5. 使用Repository进行基本的CRUD

@RestController

public class LabelController{

@Autowired

private LabelRepository labelRepository;

/**

* 根据id获取指定标签

*@param id 标签id

*@return Label

*/

@RequestMapping(value ="/{id}", method = RequestMethod.GET)public

RestResponse

Label label = labelRepository.findOne(id);

if(label == null){

return RestResponse.bad(-10001,"label is not exsist ");

}

return RestResponse.good(label);

}

/**

*根据标签内容label获取指定标签

*@param label 标签内容label

*@return Label

*/

@RequestMapping(method = RequestMethod.GET, params = {"label"})

public RestResponse

if(label == null){

return RestResponse.bad(-10001,"label is not exsist ");

}

return RestResponse.good(label);

}

}

基本使用流程就是这样的!当然,这里面还有很多很多细节,随便拿一个出来都可以研究半天的,比如说Repository接口里面使用@Query支持自定义查询语句,使用@AttributeOverride注解关联内部类属性等等。

相关文档