一、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();
}