Spring Boot基本应用(二)------集成spring data jpa

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

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值