SpringBoot快速开发(七)【数据库整合(pgsql jpa)】

一、引入依赖

首先引入pssql和jpa的依赖包:

        <!-- pgsql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>
        <!-- jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

二、配置文件

spring:
  datasource:
    driver-class-name: org.postgresql.Driver
    username: postgres
    password: Hik12345
    url: jdbc:postgresql://10.21.82.6:5432/test
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
#防止启动时打印出“java.sql.SQLFeatureNotSupportedException: 这个 org.postgresql.jdbc.PgConnection.createClob() 方法尚未被实作。”的异常
    properties:
      hibernate:
         temp:
            use_jdbc_metadata_defaults: false

讲一下ddl-auto:

  • ddl-auto:create----每次运行该程序,没有表格会新建表格,表内有数据会清空
  • ddl-auto:create-drop----每次程序结束的时候会清空表
  • ddl-auto:update----每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
  • ddl-auto:validate----运行程序会校验数据与数据库的字段类型是否相同,不同会报错

   一般情况下设置成update,启动程序时会根据实体类自动创建数据库表

三、创建实体类

/**
 * 用户
 *
 * @author renjie
 * @version 1.0.0
 */
@Entity
@Table(name = "user_info")
public class UserInfo implements Serializable {
    private static final long serialVersionUID = 7291943992082860001L;
    @Id
    private Long id;
    @Column(name = "name",nullable = false)
    private String name;

    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;
    }
}

使用@Table来指定表的一些属性,这里我设定了表名。 

使用@Id来指明主键

使用@Column可以设定列的属性,包括非空,名称,唯一,默认值等等。

四、创建jpa的dao层接口

接下来我们创建一个接口实现JpaRepository或者调用entitymanage的类方法,这一篇我先实现第一种方法来给大家演示,下一篇我们再说后一种方法。

/**
 * 数据层
 *
 * @author renjie
 * @version 1.0.0
 */
public interface UserRepository extends JpaRepository<UserInfo, Long>, JpaSpecificationExecutor<UserInfo> {



}

JPA已经把我们常用的一些增(save),删(delete),改(update),查(find)已经做了一定的封装,所以在这个接口中我们直接拿来使用就可以了。但若要进行一些条件查询、修改之类的操作,则需要自定义方法。jpa根据方法名称来进行sql查询,如你需要根据用户名称查询用户,可以在UserRepository接口中添加如下方法:

List<UserInfo> findUserInfoByName(String name);

五、演示

控制层代码如下:

/**
 * 控制层
 *
 * @author renjie
 * @version 1.0.0
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    UserServcie userServcie;

    @RequestMapping(value="/save", method = RequestMethod.POST)
    public ObjectResult save(UserInfo userInfo){
        userServcie.saveUser(userInfo);
        return ObjectResult.success();
    }

    @RequestMapping(value="/find", method = RequestMethod.GET)
    public ObjectResult save(){
        List<UserInfo> userInfos = userServcie.find();
        return ObjectResult.success(userInfos);
    }
}

  service层的代码就不贴了,直接调用UserRepository接口中的save、findAll方法即可

 

猜你喜欢

转载自blog.csdn.net/nsxqf/article/details/85859830
今日推荐