在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依赖
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注解关联内部类属性等等。