今天小结springboot集成Mybaties及相关配置
1. 既然集成Mybaties,自然要导入mybaties的相关包
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency>
mysql驱动及阿里巴巴连接池
2.配置application.properties文件
数据库配置信息,并进行连接测试
springData-JPA介绍
Spring-data-jpa的优点
开发中对数据库的操作大多为增删改查,开发者重复大量且枯燥的代码来实现这部分逻辑
Spring-data-jpa使数据访问层变成只是一层接口的编写方式
Spring-data-jpa 只需要一个继承了JpaRepository的接口就能实现数据的访问
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name);
@Query("from User u where u.name=:name")
User findUser(@Param("name") String name);
}
既然是SpringJPA同样添加依赖包和数据库驱动
SpringBoot集成SpringData-JPA依赖
在pom.xml中添加依赖(以MySql数据库为例):
<!-- SpringData-Jpa依赖-->
<dependency
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- mysql驱动:com.mysql.jdbc.Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
Spring-data-jpa依赖于Hibernate
spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置属性
主要作用是:自动创建、更新、验证数据库表结构
参数配置介绍:
create:
每次加载hibernate时都会删除上一次的生成的表,
然后根据model类重新生成表,哪怕没有改变,
这是导致数据库表数据丢失的一个重要原因。
create-drop:
每次加载hibernate时根据model类生成表,但sessionFactory关闭时,表自动删除。
update:最常用
首次加载hibernate时根据model类自动建立起表结构(要先建立数据库)
以后加载hibernate时根据model类自动更新表结构,即使表结构变了,老数据不删除。
注意:当部署到服务器后,表结构不会立即建立起来,应用首次运行后才会建立表结构。
validate:
每次加载hibernate时,验证创建数据库表结构,和数据库表比较,不创建新表,会插入新值。
这里简单介绍一下SessionFactory,对其理解来源于另一篇博客,特此感谢博主的总结:
sessionFactory 理解
Hibernate的核心接口之一 SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
sessionFactory 作用
用于管理Hibernate会话(session)的对象,所以,最最最简单的理解,你可以把sessionFactory想想成里面有一个DataSource;这个对象创建了,hibernate才真正和数据库连接上了。即SessionFactory维护着所有连接对象已经连接对象的分配和销毁;SessionFactory是线程安全的,并且创建和销毁需要消耗比较大的资源,所以整个应用里面针对一个数据库只需要一个SessionFactory即可;
SessionFactory管理着配置在其中的映射对象的解析数据,动作监听器,NamedQuery等大量信息;
sessionFactory的相关方法返回session对象,而不是平常的new关键字创建session