学习Spring boot 数据库连接

来源:互联网 发布:淘宝快快比 编辑:程序博客网 时间:2024/06/05 14:00

1、配置文件内容

     

spring:  profiles:    active: dog  datasource:    driver-class-name: com.mysql.jdbc.Driver    url: jdbc:mysql://127.0.0.1:3306/dogs    username: root    password: 123456  jpa:    hibernate:      ddl-auto: update    show-sql: true
      配置spring.datasource,配置jpa,jpa是为了对数据库进行持久化的支持,ddl-auto的值决定了实体类与数据库表之间的关系,它的值有:

      1)、create,只要程序启动,就会创建新的表,不管表是否已经存在,会删除已存在的表。

      2)、update,程序启动时更新表结构,但不会删除已存在的数据。

      3)、create-drop,当程序停止时,删除表。

      4)、none,什么都不做。

      5)、validate,验证类的属性与表结构是否一致,不一致就报错。


2、实体类的写法

      实体类需要加上@Entity的注解,id用@Id注解修饰,可以加上@GeneratedValue来实现自动增加。实体类需要有一个空的构造方法,并且所有的属性要有get和set方法。

@Entitypublic class Dog {    @Id    @GeneratedValue    private Integer id;    private Integer age;    private String type;    private String favorite;


3、数据库操作接口JpaRepository

      关键接口,每一个类的操作接口都要继承它,如下:

public interface DogRepository extends JpaRepository<Dog , Integer>{}

      模板参数第一个是实体类的类型,第二个是主键的类型,只需要这样的配置,就可以直接使用这个接口。

      在需要使用的Controller中添加代码

@Autowiredprivate DogRepository dogRepository;

      就可以使用它进行数据库的简单操作了,如果不按Id进行查询,可以在接口中增加以下代码

List<Dog> findByAge(Integer age);

      注意方法的名称规范,findBy后面跟的一定要是你的实体类中有的属性名,首字母大写,就可以直接使用了。

      如果涉及到多表查询或者复杂查询的话,需要自己写sql的,可以使用@Query注解,在你自己写的Repository中增加方法:

@Query("select t from Dog t where t.type = ?1 and t.age = ?2")Dog findByTypeAndAge(String type, Integer age);

      这是根据类型和年龄进行查找。

      @Query的用法还有很多,比如like的写法:

@Query(value = "select * from dog t where t.type like %:type% and t.age = :age" , nativeQuery = true)List<Dog> findByTypeAndAge(@Param("type") String type , @Param("age") Integer age);

      这里的nativeQuery为true表示使用与当前数据库匹配的sql语句,而不是用hql。而@Param则是将参数注入到sql语句中,sql语句中用冒号+参数名的方式写。






















原创粉丝点击