Spring Data Jpa使用记录(持续记录)

介绍

在相当长的一段时间内,实现应用程序的数据访问层一直很麻烦。必须编写太多样板代码来执行简单查询以及执行分页和审计。Spring Data JPA旨在通过减少实际需要的工作量来显着改善数据访问层的实现。作为开发人员,您编写存储库接口,包括自定义查找器方法,Spring将自动提供实现。

想了解更多的使用教程,请前往官方文档,在此我只是记录下我所示使用Spring-data-jpa的相关用法。
官网地址

使用记录

一、在maven项目中引用

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

二、新建实体类

实体类要和数据库表单字段对应,此处我用用户表做为例子

import org.hibernate.annotations.GenericGenerator;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "tb_user")
public class tb_user {
    @Id
    @GenericGenerator(name = "idGenerator", strategy = "uuid")//这个是hibernate的注解/生成32位UUID
    @GeneratedValue(generator = "idGenerator")
    private String pk;
    private String username;
    private String password;
    private String phone;
    private boolean active;
    private String authority;

    public String getPk() {
        return pk;
    }

    public void setPk(String pk) {
        this.pk = pk;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }


    public String getAuthority() {
        return authority;
    }

    public void setAuthority(String authority) {
        this.authority = authority;
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }
}

三、为实体类新建Dao层

import com.sun.gisvisualition.entity.tb_user;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

public interface tb_userDao extends JpaRepository<tb_user, String>, JpaSpecificationExecutor<tb_user> {

    tb_user findByUsernameAndPassword(String username, String password);

    tb_user findByPhoneAndPassword(String phone, String password);
}

四、Controller层调用

其使用方法和SSM框将的使用方法类似,具体代码如下,com.sun下面的代码是我自定义的接口和实体类;

下面的是验证登录的接口

import com.sun.gisvisualition.config.exception.DataResultException;
import com.sun.gisvisualition.dao.tb_userDao;
import com.sun.gisvisualition.dao.tb_user_infoDao;
import com.sun.gisvisualition.entity.DataResult;
import com.sun.gisvisualition.entity.tb_user;
import com.sun.gisvisualition.entity.tb_user_info;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Controller
@RequestMapping("user")
public class userController {

    @Autowired
    private tb_userDao tbUserDao;

    @Autowired
    private tb_user_infoDao tbUserInfoDao;

    @RequestMapping("isLogin")
    @ResponseBody
    public DataResult isLogin(String username, String password, HttpSession session) {
        DataResult dataResult = new DataResult();
        tb_user tbUser = new tb_user();
        tb_user_info tbUserInfo = new tb_user_info();
        Pattern p = null;
        Matcher m = null;
        p = Pattern.compile("^[1][3,4,5,8][0-9]{9}$");
        m = p.matcher(username);
        if (m.matches()) {
            tbUser = tbUserDao.findByPhoneAndPassword(username, password);
        } else {
            tbUser = tbUserDao.findByUsernameAndPassword(username, password);
        }
        if (tbUser == null) {
            throw new DataResultException("账号或密码错误");
        }
        if (tbUser.isActive() == false) {
            throw new DataResultException("账号未激活");
        }
        tbUserInfo = tbUserInfoDao.findByUserPk(tbUser.getPk());
        session.setAttribute("user", tbUser);
        session.setAttribute("user_info", tbUserInfo);
        dataResult.setMsg("登录成功");
        dataResult.setData(tbUserInfo);
        return dataResult;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙霸天

你的打赏是我不断创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值