前言

近期在投简历,发现很多公司要求基本上都蕴含了J2EE的主流开发框架,这让我很不解,对于一个几近应届毕业生的我来说,自我感觉学得还是比较多的了,什么Spring Spring MVC MyBatis玩来玩去,什么IOC、AOP,什么拦截器过滤器也就那样吧,玩腻之后搞搞Spring Template,进阶Spring Boot,然后弄回SSM那套整合,没学SSM之前觉得自己底气不足,出去不满足企业的要求,学完之后发现不同的公司要求不一样,问我会Hibernate嘛,汗,总之技术吧,肯定是学无止尽了,有一句话我觉得很有启发,你会用但是不代表你精通,你精通不一定适用,适用不一定需要精通,合适才是最好的,我现在目前的处境就是会用,但是不精通~理解,但是自己表达不出来~我能怎么办呢?看书呗!

Spring Boot准备工作

POM文件的一些依赖,主要是Spring Boot 的支持,Web支持,JPA支持,MySQL驱动支持,然后Junit单元测试以及框架测试支持
  <!-- Spring Boot 继承 -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
  </parent>
  <dependencies>
    <!-- WEB 支持 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 调试工具 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- spring-boot-starter-data-jpa -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

这里因为引用了数据库支持,所以需要添加我们数据库访问的配置

-application.properties

spring.datasource.username=root
spring.datasource.password=
spring.datasource.url=jdbc:mysql:///test?useSSL=false&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

 

JPA配置

-JpaConfig.java


@Configuration
@EnableJpaRepositories(basePackages="com.tiancaisq.boot2.repository") //JPA资源库扫描
@EntityScan(basePackages="com.tiancaisq.boot2.entity") //实体类扫描
@EnableTransactionManagement(proxyTargetClass=true) //开启事务支持
public class JPAConfig {

}

创建实体类

部门实体类


@Entity
@Table(name="deparment")
public class Deparment implements Serializable{
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	private String name;
}

角色实体类


@Entity
@Table(name="role")
public class Role implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	private String name;
}

用户实体类


@Entity
@Table(name="user")
public class User implements Serializable{
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	private String name;
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date createDate;
	
	@ManyToOne
	@JoinColumn(name="did")
	@JsonBackReference   //防止对象递归访问
	private Deparment deparment;
	
	@ManyToMany  // 多对多这里会产生一个懒加载异常,显示声明实时加载数据即可,添加一个属性【fetch=FetchType.EAGER】
	@JoinTable(name="user_role",joinColumns={@JoinColumn(name="user_id")}, inverseJoinColumns={@JoinColumn(name="role_id")})
	private List<Role> roles;
}

  JPA持久化资源库


public interface DeparmentRepository extends JpaRepository<Deparment, Long> {}
public interface RoleRepository extends JpaRepository<Role, Long> {}
public interface UserRepository extends JpaRepository<User, Long> {}

单元测试

 


@SpringBootTest(classes=SpringBootConfig.class)
@RunWith(SpringRunner.class)
public class JpaTest {

	@Autowired
	private ApplicationContext ac;
	@Autowired
	private DeparmentRepository deparmentRepository;
	@Autowired
	private RoleRepository roleRepository;
	@Autowired
	private UserRepository userRepository;
	
	private final Logger logger = LoggerFactory.getLogger(JpaTest.class);

使用Hibernate自动更新表结构

logging.level.boot2.JpaTest=debug

spring.jpa.hibernate.ddl-auto=update //如果不自动更新的话一旦表结构不存在将会报异常 ResultSet

简单查询

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注