一、pom.xml
<!--資料庫支援-->
<!--引入jpa spring boot會自動引入HikariCP的依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
二、配置資料連接配接池參數
server:
port: 8082
spring:
datasource:
driverClassName: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
username: scott
password: 1234
hikari:
# 此屬性控制從池傳回的連接配接的預設自動送出行為。它是一個布爾值。預設值:true
# auto-commit: true
# 此屬性控制用戶端(即您)等待池連接配接的最大毫秒數。如果超出此時間而沒有連接配接可用,則将引發SQLException。最低可接受的連接配接逾時為250 ms。預設值:30000(30秒)
#connection-timeout: 30000
#連接配接空閑在池中的最長時間值為,0意味着從未從池中移除空閑連接配接。最小允許值為10000 ms(10秒)。預設值:600000(10分鐘)
idle-timeout: 10000
#此屬性控制池中連接配接的最大生存期,0表示不存在最大生存期(無限生存期),當然要受idleTimeout設定的限制。違約時間:1800000(30分鐘)
max-lifetime: 1800000
# 連接配接池大小預設25,官方推薦250-500
maximumPoolSize: 10
pool-name: DatebookHikariCP
jpa:
hibernate:
ddl-auto: update
showsql: true
說明:
ddl-auto:create----每次運作該程式,沒有表格會建立表格,表内有資料會清空
ddl-auto:create-drop----每次程式結束的時候會清空表
ddl-auto:update----每次運作程式,沒有表格會建立表格,表内有資料不會清空,隻會更新
ddl-auto:validate----運作程式會校驗資料與資料庫的字段類型是否相同,不同會報錯
三、實體
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* 使用者實體類
*/
@Table(name = "Z_CSL_USE")
@Entity
public class User implements Serializable {
/**
* 如果id要使用sequecce方式實作主鍵生成,該字段類型需要改為(int、 long )
*/
@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
@Column(name = "useid",length = 36)
private String useid;
@Column(name = "usenam",length = 50)
private String usenam;
@Column(name = "useacc",length = 50)
private String useacc;
@Column(name = "usemob",length = 11)
private String usemob;
@Column(name = "useema",length = 50)
private String useema;
@Column(name = "acctyp",length = 2)
private String acctyp;
@Column(name = "logtyp",length = 1)
private String logtyp;
@Column(name = "usepwd",length = 50)
private String usepwd;
@Column(name = "uniid",length = 400)
private String uniid;
@Column(name = "datsta",length = 1)
private String datsta;
@Column(name = "ordno",length = 5)
private Long ordno;
private Date lastim;
@Column(name = "creper",length = 36)
private String creper;
private Date cretim;
@Column(name = "updper",length = 36)
private String updper;
private Date updtim;
四、Repository
dao接口內建JpaRepository便可以使用jpa的方法進行入庫操作。
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import javax.transaction.Transactional;
public interface UserDao extends JpaRepository<User, Integer> {
/**
* 删除使用者
*/
@Transactional
@Modifying
@Query(value = "delete Z_CSL_USE t where t.useid=?1", nativeQuery = true)
void delete(String id);
五、增删改查
5.1.新增
controller
/**
* @param user 前端傳遞的user對象
* @return 傳回新增後的帶主鍵的user對象
*/
@PutMapping(value = "_insert")
public User insert(User user) {
//調用【UserLogic】類中的【insert】方法,傳入使用者對象,實作新增
return userLogic.insert(user);
}
service
/**
* 新增使用者
* 在【Z_CSL_USE】表中新增一條記錄,使【使用者名=@使用者名...】
*
* @param user 傳入的user對象
* @return 傳回新增後的帶主鍵的user對象
*/
public User insert(User user) {
//1.設定使用者的狀态為1,1-正常,0-失效
user.setDatsta("1");
//3.執行新增
return userDao.saveAndFlush(user);
}
5.2.删除
controller
/**
* 删除使用者的接口
*/
@DeleteMapping(value = "_delete/{id}")
public boolean delete(@PathVariable("id") String id) {
try {
userLogic.delete(id);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
service
/**
* 删除使用者
*/
public void delete(String id){
User user=new User();
user.setUseid(id);
userDao.delete(user);
}
5.3.修改
controller
/**
* 編輯使用者資訊
*
* @param user 前端傳遞的user對象
* @return 傳回修改後的user對象
*/
@PostMapping(value = "_update")
public User update(User user) {
return userLogic.update(user);
}
service
/**
* 編輯使用者資訊
* 在【Z_CSL_USE】表中修改一條記錄,滿足【使用者主鍵=@使用者主鍵】,使【使用者名=@使用者名...】
*
* @param user 傳入的user對象
* @return 傳回新增後的帶主鍵的user對象
*/
public User update(User user) {
//1.調用【UserDao】類中的【findById】方法,傳入使用者主鍵,查詢使用者詳細資訊
User rootUser = userDao.findById(user.getUseid());
//2.設定使用者名
rootUser.setUsenam(user.getUsenam());
//3.設定手機号
rootUser.setUsemob(user.getUsemob());
//4.設定使用者郵箱
rootUser.setUseema(user.getUseema());
//5.設定更新時間
rootUser.setUpdtim(new Date());
//6.執行修改操作(jpa根據主鍵找到記錄修改變化的字段)
return userDao.saveAndFlush(rootUser);
}
5.4.查詢
controller
/**
* 根據賬号和密碼查詢使用者
*/
@PostMapping(value = "check")
public User getAccountAndPassword(User user){
return userLogic.getAccountAndPassword(user);
}
service
根據賬号和密碼查詢使用者資訊
public User getAccountAndPassword(User user){
//1.設定使用者對象
user.setDatsta("1");
//2.擷取Example對象傳入user對象
Example<User> ex = Example.of(user);
return userDao.findOne(ex).get();
}