1. 程式人生 > 其它 >005使用jpa實現資料庫的增刪改查操作

005使用jpa實現資料庫的增刪改查操作

001 檔案對應的位置

 

 

 002 DAO中的OperatorLog.java

package com.imooc.springboot.Dao;

import com.imooc.springboot.entity.admin.OperatorLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
/*
*   後臺操作日誌類資料庫操作層
*   可以在裡面自定義方法
* */
@Repository
public interface OperatorLogDao extends JpaRepository<OperatorLog,Long> {

    @Query("select ol from OperatorLog  ol where id = :aaa")
    OperatorLog find(@Param("aaa") Long id);

}

003 Service中的OperatorLogService.java

package com.imooc.springboot.service.admin;

import com.imooc.springboot.Dao.OperatorLogDao;
import com.imooc.springboot.entity.admin.OperatorLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/*
*   後臺操作類資料庫操作service
* */
@Service
public class OperatorLogService {

    @Autowired
    private OperatorLogDao operatorLogDao;

    /*
    *   新增/修改操作日誌,當id不為空時,修改,當id為空時,自動新增一條記錄
    * */
    public OperatorLog save(OperatorLog operatorLog){
        return operatorLogDao.save(operatorLog);
    }

    /*
    *   根據id查詢單條資料
    * */
    public OperatorLog findById(Long id){
        return operatorLogDao.find(id);
    }

    /*
    *   查詢所有資料
    * */
    public List<OperatorLog> findAll(){
        return operatorLogDao.findAll();
    }

    //刪除單挑資料
    public void delete(Long id){
        operatorLogDao.deleteById(id);
    }

    /*
    *   清空整張表
    * */
    public void deleteAll(){
        operatorLogDao.deleteAll();
    }
}

 004 Controller中的SystemController.java

package com.imooc.springboot.controller.admin;

import com.imooc.springboot.config.siteConfig;
import com.imooc.springboot.entity.admin.OperatorLog;
import com.imooc.springboot.service.admin.OperatorLogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/*
*
*   系統控制器
*
* */
@RequestMapping("/system")
@Controller
public class SystemController {

    @Autowired
    private siteConfig siteConfig;

    //使用operatorLogService
    @Autowired
    private OperatorLogService operatorLogService;

    private Logger logger = LoggerFactory.getLogger(SystemController.class);

    @RequestMapping(value="/index")
    public String index(String name, Model model){

        OperatorLog operatorLog = new OperatorLog();
        operatorLog.setOperator("猿來入此");
        operatorLog.setContent("猿來入此的網址是:https://yuanlrc.com");
        model.addAttribute("operator",operatorLog);
        model.addAttribute("date",new Date());

        List<OperatorLog> operatorLogs = new ArrayList<OperatorLog>();
        OperatorLog ol1 = new OperatorLog();
        ol1.setOperator("猿來入此01");
        ol1.setContent("猿來入此01 的網址是:https://yuanlrc.com0");
        operatorLogs.add(ol1);
        OperatorLog ol2 = new OperatorLog();
        ol2.setOperator("猿來入此02");
        ol2.setContent("猿來入此02 的網址是:https://yuanlrc.com0");
        operatorLogs.add(ol2);
        OperatorLog ol3 = new OperatorLog();
        ol3.setOperator("猿來入此03");
        ol3.setContent("猿來入此03 的網址是:https://yuanlrc.com0");
        operatorLogs.add(ol3);

        model.addAttribute("name",siteConfig.getSiteName());
        model.addAttribute("url",siteConfig.getSiteUrl());
        logger.info("siteName =" + siteConfig.getSiteName());
        logger.info("siteUrl =" + siteConfig.getSiteUrl());

        //資料庫操作
        operatorLog.setCreateTime(new Date());//建立時間
        operatorLog.setUpdateTime(new Date());//更新時間
        operatorLog.setId(Long.valueOf(5));//加上id,是修改id=5下的資料;如果沒有,則是新增該條資料
        operatorLog.setOperator("[猿來入此beta]");
        operatorLogService.save(operatorLog);
/**
        ol1.setCreateTime(new Date());
        ol1.setUpdateTime(new Date());
        operatorLogService.save(ol1);

        ol2.setCreateTime(new Date());
        ol2.setUpdateTime(new Date());
        operatorLogService.save(ol2);

        ol3.setCreateTime(new Date());
        ol3.setUpdateTime(new Date());
        operatorLogService.save(ol3);*/
        return "index";
    }
*/ //查詢單條資料 /* @RequestMapping(value="/test") @ResponseBody public OperatorLog index(Long id){ OperatorLog findById = operatorLogService.findById(id); if(findById != null){ OperatorLog operatorLog = new OperatorLog(); operatorLog.setOperator(findById.getOperator()); operatorLog.setContent(findById.getContent()); operatorLog.setCreateTime(findById.getCreateTime()); operatorLog.setUpdateTime(findById.getUpdateTime()); operatorLog.setId(findById.getId()); return operatorLog; } return operatorLogService.findById(id); }
*/ /* 查詢所有的資料 @RequestMapping(value="/test01") @ResponseBody public List<OperatorLog> index(Long id){ return operatorLogService.findAll(); }*/ @RequestMapping(value="/test01") @ResponseBody public Boolean index(Long id){ OperatorLog operatorLog = new OperatorLog(); operatorLog.setOperator("[猿來入此Beta]"); operatorLog.setContent("猿來入此的網址是:https://yuanlrc.com"); operatorLog.setId(id); operatorLog.setCreateTime(operatorLogService.findById(id).getCreateTime()); operatorLogService.save(operatorLog); // operatorLogService.deleteAll();//刪除所有資料 return true; } }

005 entity中的公共實體(baseEntity.java)和OperatorLog.java

baseEntity.java

package com.imooc.springboot.entity.admin;

import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/*
*   基礎實體公共屬性
*   Serializable:實現序列化的介面
* */
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class baseEntity implements Serializable{


    @Column(name="id", nullable = false, length = 11)
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;//唯一id

    //@CreatedDate 儲存建立的時間
    @Column(name = "create_time",nullable = false)
    @CreatedDate
    private Date createTime;//操作時間

    //@LastModifiedDate 儲存上次的時間
    @Column(name = "update_time",nullable = false)
    @LastModifiedDate
    private Date updateTime;//更新時間

    public Long getId() {
        return id;
    }

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

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

 OperatorLog.java

package com.imooc.springboot.entity.admin;

import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Table;
/*
*   後臺操作日誌記錄表
* */
@Entity
@Table(name="yuanlrc_operator_log")
@EntityListeners(AuditingEntityListener.class)
public class OperatorLog extends baseEntity{

    private static final long serialVersionUID = 1L;//新增一個序列化id

    @Column(name="operator", nullable = false, length = 18)
    private String operator; //操作者

    @Column(name = "content", nullable = false, length = 128)
    private String content;//操作內容

    public String getOperator() {
        return operator;
    }

    public void setOperator(String operator) {
        this.operator = operator;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}