注解配置 mysql_java使用JPA和mysql配置注解方式

本文介绍了如何在Spring Boot项目中使用JPA和MySQL进行配置,包括创建配置类JPAConfig,设置数据源、实体管理工厂和事务管理器,以及YML配置文件中的数据库连接信息。同时,展示了创建JPA接口、实体类User以及对应的单元测试。
摘要由CSDN通过智能技术生成

创建项目

首先我使用的是Intellij IDEA,在idea中使用spring boot,spring boot版本选择了1.5.7。

创建完项目并且导入依赖后创建jpa的config

b7b3631dbaa95a612de42ad4f275a94b.png

jpaconfig

package com.tal.demoes1.config;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

import org.springframework.orm.jpa.JpaTransactionManager;

import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;

import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;

import org.springframework.transaction.PlatformTransactionManager;

import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.persistence.EntityManagerFactory;

import javax.sql.DataSource;

import java.lang.management.PlatformLoggingMXBean;

@Configuration

@EnableJpaRepositories(basePackages = "com.tal.demoes1.repository")

@EnableTransactionManagement

public class JPAConfig {

//建立数据源

@Bean

@ConfigurationProperties(prefix = "spring.datasource")

public DataSource dataSource() {

return DataSourceBuilder.create().build();

}

//实体类的管理工厂

@Bean

public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

//实例化jpa适配器,由于使用的是hibernate所以用hibernatejpavendor

HibernateJpaVendorAdapter japVendor = new HibernateJpaVendorAdapter();

//不生成sql

japVendor.setGenerateDdl(false);

//实例化管理工厂

LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();

entityManagerFactory.setDataSource(dataSource());

entityManagerFactory.setJpaVendorAdapter(japVendor);

//设置扫描包名

entityManagerFactory.setPackagesToScan("com.tal.demoes1.entity");

return entityManagerFactory;

}

//事务管理

@Bean

public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {

//实例化

JpaTransactionManager transactionManager = new JpaTransactionManager();

transactionManager.setEntityManagerFactory(entityManagerFactory);

return transactionManager;

}

}

先注解这是一个configuration,然后配置JPA的自动扫描基础包为(“你的就构的包名”),最后是自动事务管理注解

关于事务管理器,不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依赖,框架会默认注入 DataSourceTransactionManager 实例。如果你添加的是 spring-boot-starter-data-jpa 依赖,框架会默认注入 JpaTransactionManager 实例。

yml配置

application.yml

spring:

profiles:

# active: prod

active: dev

#active: test

dev

server:

port: 8880

spring:

session:

store-type: hash_map

jpa:

#database-platform: org.hibernate.dialect.My5SQL5Dialect

hibernate:

ddl-auto: create

show-sql: true

database: mysql

# properties:

# hibernate.dialect: org.hibernate.dialect.My5SQL5Dialect

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/xunwu

username: root

password: root

logging:

level:

root: debug

security:

basic:

enabled: false

然后实现一个jpa的接口继承jpa

aa7d2400eee8d71409995fb58eb779b0.png

此时的结构

package com.tal.demoes1.repository;

import com.tal.demoes1.entity.User;

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository{

}

然后我们在entity写一个实体类User

package com.tal.demoes1.entity;

import org.springframework.security.core.GrantedAuthority;

import org.springframework.security.core.userdetails.UserDetails;

import javax.persistence.*;

import java.util.Collection;

import java.util.Date;

import java.util.List;

@Entity

@Table(name = "user")

public class User {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

private String name;

private String password;

private String email;

@Column(name = "phone_number")

private String phoneNumber;

private int status;

@Column(name = "create_time")

private Date createTime;

@Column(name = "last_login_time")

private Date lastLoginName;

@Column(name = "last_update_time")

private Date lastUpdateTime;

private String avatar;

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void setPassword(String password) {

this.password = password;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getPhoneNumber() {

return phoneNumber;

}

public void setPhoneNumber(String phoneNumber) {

this.phoneNumber = phoneNumber;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

this.status = status;

}

public Date getCreateTime() {

return createTime;

}

public void setCreateTime(Date createTime) {

this.createTime = createTime;

}

public Date getLastLoginName() {

return lastLoginName;

}

public void setLastLoginName(Date lastLoginName) {

this.lastLoginName = lastLoginName;

}

public Date getLastUpdateTime() {

return lastUpdateTime;

}

public void setLastUpdateTime(Date lastUpdateTime) {

this.lastUpdateTime = lastUpdateTime;

}

public String getAvatar() {

return avatar;

}

public void setAvatar(String avatar) {

this.avatar = avatar;

}

}

然后写一个单元测试类来测试

`package com.tal.demoes1.entity;

import com.tal.demoes1.ApplicationTests;

import com.tal.demoes1.repository.UserRepository;

import org.junit.Assert;

import org.junit.Test;

import org.springframework.beans.factory.annotation.Autowired;

public class UserRepositoryTest extends ApplicationTests {

@Autowired

private UserRepository userRepository;

@Test

public void testFindOne(){

User user = userRepository.findOne(1L);

Assert.assertEquals("waliwali",user.getName());

}

}

`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值