Spring Boot之JPA的使用

一.添加相关依赖
数据库是MySQL,则相关依赖如下:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

二.添加配置项

#datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.tomcat.max-active=20
spring.datasource.tomcat.test-while-idle=true
spring.datasource.tomcat.validation-query=select 1
spring.datasource.tomcat.default-auto-commit=false
spring.datasource.tomcat.min-idle=15
spring.datasource.tomcat.initial-size=15
#jpa
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jackson.serialization.indent-output=true

三.写数据库表对应的实体类

@Entity
@Table(name="ifc_legal_article")
public class IfcLegalArticle implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private  Integer id;

    /**
     * 名称
     */
    private String name;

    /**
     * 内容
     */
    private String fltw;

    /**
     * 添加时间
     */
    @Column(name = "add_time")
    private Date addTime;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFltw() {
        return fltw;
    }

    public void setFltw(String fltw) {
        this.fltw = fltw;
    }

    public Date getAddTime() {
        return addTime;
    }

    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }
}

四.写dao层接口
dao里面的方法,很多不用写,按照,例如根据name查询记录,可以这样写:queryByName,以驼峰命名法即可很好的识别,不用@Query注解都可以识别。如果有自己特色需求,需要特定sql完成,则可以用@Query注解即可,如下:

public interface IfcLegalArticleDao extends JpaRepository<IfcLegalArticle, Integer>{


    /** 
     * @description 查询记录
     */
    public IfcLegalArticle queryByName(String name);

    /**
     * 
     * @description 查询法律条文总数
     */
    @Query(nativeQuery = true, value = "select count(*) from ifc_legal_article")
    public int selectTotal();

}

五.业务层使用

在代码层里先注入dao层接口,然后即可开始世界调用相关方法使用了,如下:

@Service
public class LegalArticleService {

    /**
     * logger
     */
    public static Logger logger = LoggerFactory
            .getLogger(LegalArticleService.class);

    @Autowired
    private IfcLegalArticleDao ifcLegalArticleDao;

   public void Test(String name){
     int count = ifcLegalArticleDao.selectTotal();
  } 
    }

对于想保存相关数据到表时,JPA有封装好的方法可在业务代码里直接使用,而不用在Dao层再写方法,具体使用方法类似如下:

                ifcLegalArticle.setName(name);
                ifcLegalArticle.setFltw(fltw);
                ifcLegalArticle.setAddTime(data1);
                ifcLegalArticleDao.save(ifcLegalArticle);

By the way ,将当前的java里的时间改为数据库的timeStamp,可如下:

        java.util.Date  date=new java.util.Date();
        java.sql.Date  data1=new java.sql.Date(date.getTime());

猜你喜欢

转载自blog.csdn.net/qq_35033270/article/details/80358120