SpringBoot-Spring Data Jpa 实现CRUD

  • 首先实体类创建

  • 这里用的是mySQL数据库
  • 配置文件yaml配置数据源和spring.jpa简单属性就好
package com.testofjpa.domain;

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

@Entity//标识,这里是一个实体类
@Table(name = "csp_test_user")//这里主要标识对应的表名,如果名字匹配,可以不需要
public class TestUser implements Serializable {

    private static final long serialVersionUID = 4122384962907036649L;

    @Id//标识,这是一个逐渐
    @GeneratedValue(strategy = GenerationType.IDENTITY)//主键自增,会在数据库里创建一个序列
    private Integer id;

    private String namer;

    private Integer age;

    private String sex;

    private String rName;

    private Date createTime;

    private Integer del;


    public Integer getId() {
        return id;
    }

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

    public String getNamer() {
        return namer;
    }

    public void setNamer(String namer) {
        this.namer = namer;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getrName() {
        return rName;
    }

    public void setrName(String rName) {
        this.rName = rName;
    }

    public Date getCreateTime() {
        return createTime;
    }

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

    public Integer getDel() {
        return del;
    }

    public void setDel(Integer del) {
        this.del = del;
    }

}
  • 查询

  • 这里只说findAll 主要是参数,和返回类型
  • 参数,Sort Example Pageable
//Sort主要用于排序,参数1:排序方式,参数2根据什么排序
Sort sort = new Sort(Sort.Direction.ASC, "id");

        //分页对象
        Pageable page1 = PageRequest.of(0, 5);
        //分页对象,且包含排序
		Pageable page2 = PageRequest.of(0, 5, new Sort(Sort.Direction.ASC, "id"));
        //查询条件对象
        TestUser user = new TestUser();
		user.setId(1);
		user.setrName("张飞");
		Example<TestUser> of1 = Example.of(user); 



 

TestUser user = new TestUser();
		user.setId(1);
		user.setrName("张");
		user.setNamer("晕");
		Example<TestUser> of1 = Example.of(user);
		System.out.println("ok");
		ExampleMatcher matcher = ExampleMatcher.matching()
				.withMatcher("rName", ExampleMatcher.GenericPropertyMatchers.startsWith())//模糊查询匹配开头,即{rName}%
				.withMatcher("namer",ExampleMatcher.GenericPropertyMatchers.startsWith())//模糊查询,匹配结尾,即%{namer}
				.withMatcher("rName" ,ExampleMatcher.GenericPropertyMatchers.contains())//全部模糊查询,即%{rName}%
				.withIgnorePaths("password");//忽略字段,即不管password是什么值都不加入查询条件
		Example<TestUser> example = Example.of(user ,matcher);
		this.tud.findAll(example);
  • 返回数据类型 

    Iterable 
    @Test//这里是写在junit4中个代码,拿参数做示范
	public void contextLoads(Iterable<TestUser> users) {

		Iterator<TestUser> it = users.iterator();
		while (it.hasNext())
			TestUser user = it.next();
		
	}
  Optional
    @Test//转实体类
	public void contextLoads(Optional<TestUser> optional) {
		TestUser user = optional.get();

	}
  • 也可以在DAO interface 中 用@Query 写HQL 直接查询 
    @Query("from TestUser u where u.id = :id")//这里注意:(冒号),和@Param连用
    TestUser getById(@Param("id") Integer id);
  • 查询不需要开启事务,如果是RUD操作 需要@Modifying@Transactional 支持,@Transactional标签一般加在service实现类方法上
    @Modifying@Transactional//这里是做案例,所以没有写service层,标签直接加在了 DAO interface
    @Query("update TestUser tu set tu.del = :del where tu.id = :id")
    Integer updTestUser(@Param("id") Integer id, @Param("del") Integer del);
  • 一般保存save , 删除deleteById,修改需要自己写,saveAndFlush不是修改哈,是冲数据用的

 

chenyb 随笔记录,方便自己学习

2018-04-16

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值