import javax.persistence.*; @Entity @Table(name="t_users") public class Users { @Id //主键id @GeneratedValue(strategy=GenerationType.IDENTITY)//主键生成策略 @Column(name="id")//数据库字段名 private Integer id; @Column(name="name") private String name; @Column(name="age") private Integer age; @Column(name="address") private String address; @ManyToOne(cascade = CascadeType.PERSIST) //表示多方 @JoinColumn(name ="role_id") //维护一个外键,外键在Users一侧 private Roles roles; public Roles getRoles() { return roles; } public void setRoles(Roles roles) { this.roles = roles; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { final StringBuffer sb = new StringBuffer("Users{"); sb.append("id=").append(id); sb.append(", name='").append(name).append('\''); sb.append(", age=").append(age); sb.append(", address='").append(address).append('\''); sb.append(", roles=").append(roles); sb.append('}'); return sb.toString(); } }
import org.springframework.data.jpa.repository.JpaRepository; import com.bjsxt.pojo.Users; / * 参数一 T :当前需要映射的实体 * 参数二 ID :当前映射的实体中的OID的类型 * */ public interface UsersRepository extends JpaRepository
{ }
import com.bjsxt.pojo.Users; import org.springframework.data.repository.Repository; import java.util.List; / * Repository接口方法名称命名查询 * */ public interface UsersRepositoryByName extends Repository
{ //方法名称必须要遵循驼峰式命名规则,findBy(关键字)+属性名称(首字母大写)+查询条件(首字母大写) List
findByName(String name); List
findByNameAndAge(String name,Integer age); List
findByNameLike(String name); }
/ * Repository */ @Test public void UsersRepositoryByName(){ List
list=this.usersRepositoryByName.findByName("张三"); for (Users users:list){ System.out.println(users); } } @Test public void findByNameAndAge(){ List
list=this.usersRepositoryByName.findByNameAndAge("张三",20); for (Users users:list){ System.out.println(users); } } @Test public void findByNameLike() { List
list = this.usersRepositoryByName.findByNameLike("张%"); for (Users users : list) { System.out.println(users); } }
import com.bjsxt.pojo.Users; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import java.util.List; / * 〈一句话功能简述〉
* Repository @Query * * @author admin * @create 2019/5/22 * @since 1.0.0 */ public interface UsersRepositoryQueryAnnotation extends JpaRepository
{ @Query("from Users where name = ?") List
queryByNameUseHQL(String name); @Query(value = "select * from t_user where name=?",nativeQuery = true) List
queryByNameUseSQL(String name); @Query("update Users set name=? where id=?") @Modifying //需要执行一个更新操作 void updateUsersNameById(String name,Integer id); }
/ * Repository--@Query测试 */ @Test public void testQueryByNameUseSQL() { List
list = this.usersRepositoryQueryAnnotation.queryByNameUseSQL("张三"); for (Users users : list) { System.out.println(users); } } / * Repository--@Query测试 */ @Test @Transactional //@Transactional与@Test 一起使用时 事务是自动回滚的。 @Rollback(false) //取消自动回滚 public void testUpdateUsersNameById() { this.usersRepositoryQueryAnnotation.updateUsersNameById("张三三", 1); }
import com.bjsxt.pojo.Users; import org.springframework.data.repository.CrudRepository; public interface UsersRepositoryCrudRepository extends CrudRepository
{ }
@Test public void testCrudRepositorySave() { Users users=new Users(); users.setName("青衫"); users.setAge(30); users.setAddress("湖南怀化"); this.usersRepositoryCrudRepository.save(users); } @Test public void testCrudRepositoryUpdate() { Users users=new Users(); users.setId(4); users.setName("青"); users.setAge(18); users.setAddress("怀化"); this.usersRepositoryCrudRepository.save(users); } @Test public void testCrudRepositoryFindOne() { Users users=this.usersRepositoryCrudRepository.findOne(4); System.out.println(users); } @Test public void testCrudRepositoryFindAll() { List
list= (List
) this.usersRepositoryCrudRepository.findAll(); for (Users user:list){ System.out.println(user); } } @Test public void testCrudRepositoryDeleteById() { this.usersRepositoryCrudRepository.delete(4); }
import com.bjsxt.pojo.Users; import org.springframework.data.repository.PagingAndSortingRepository; public interface UsersRepositoryPagingAndSorting extends PagingAndSortingRepository
{ }
@Test public void testPagingAndSortingRepositorySort() { //Order 定义了排序规则 Sort.Order order=new Sort.Order(Sort.Direction.DESC,"id"); //Sort对象封装了排序规则 Sort sort=new Sort(order); List
list= (List
) this.usersRepositoryPagingAndSorting.findAll(sort); for (Users users:list){ System.out.println(users); } } @Test public void testPagingAndSortingRepositoryPaging() { //Pageable:封装了分页的参数,当前页,煤业显示的条数。注意:它的当前页是从0开始 //PageRequest(page,size):page表示当前页,size表示每页显示多少条 Pageable pageable=new PageRequest(1,2); Page
page=this.usersRepositoryPagingAndSorting.findAll(pageable); System.out.println("数据的总条数:"+page.getTotalElements()); System.out.println("总页数:"+page.getTotalPages()); List
list=page.getContent(); for (Users users:list){ System.out.println(users); } } @Test public void testPagingAndSortingRepositorySortAndPaging() { Sort sort=new Sort(new Sort.Order(Sort.Direction.DESC,"id")); Pageable pageable=new PageRequest(0,2,sort); Page
page=this.usersRepositoryPagingAndSorting.findAll(pageable); System.out.println("数据的总条数:"+page.getTotalElements()); System.out.println("总页数:"+page.getTotalPages()); List
list=page.getContent(); for (Users users:list){ System.out.println(users); } }
/ * 参数一 T :当前需要映射的实体 * 参数二 ID :当前映射的实体中的OID的类型 * */ public interface UsersRepository extends JpaRepository
{ }
/ * JpaRepository 排序测试 */ @Test public void testJpaRepositorySort() { //Order 定义了排序规则 Sort.Order order=new Sort.Order(Sort.Direction.DESC,"id"); //Sort对象封装了排序规则 Sort sort=new Sort(order); List
list= this.usersRepository.findAll(sort); for (Users users:list){ System.out.println(users); } }
import com.bjsxt.pojo.Users; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; / * 〈一句话功能简述〉
* JpaSpecificationExecutor * * @author admin * @create 2019/5/23 * @since 1.0.0 */ public interface UserRepositorySpecification extends JpaRepository
,JpaSpecificationExecutor
{ }
/ * JpaSpecificationExecutor 单条件查询 */ @Test public void testJpaSpecificationExecutor1() { / * Specification:用于封装查查询条件 */ Specification
spec=new Specification
() { //Predicate:封装了单个查询条件 / * @param root 对查询对象属性的封装 * @param criteriaQuery 封装了我们要执行的查询中的各个部分的信息,select from order * @param criteriaBuilder 查询条件的构造器 * @return */ @Override public Predicate toPredicate(Root
root, CriteriaQuery
criteriaQuery, CriteriaBuilder criteriaBuilder) { //where name="张三" / * 参数一:查询的属性 * 参数二:条件的值 */ Predicate predicate=criteriaBuilder.equal(root.get("name"),"张三"); return predicate; } }; List
list=this.userRepositorySpecification.findAll(spec); for (Users users:list){ System.out.println(users); } } / * JpaSpecificationExecutor 多条件查询方式一 */ @Test public void testJpaSpecificationExecutor2() { / * Specification:用于封装查查询条件 */ Specification
spec=new Specification
() { //Predicate:封装了单个查询条件 / * @param root 对查询对象属性的封装 * @param criteriaQuery 封装了我们要执行的查询中的各个部分的信息,select from order * @param criteriaBuilder 查询条件的构造器 * @return */ @Override public Predicate toPredicate(Root
root, CriteriaQuery
criteriaQuery, CriteriaBuilder criteriaBuilder) { //where name="张三" and age=20 / * 参数一:查询的属性 * 参数二:条件的值 */ List
list=new ArrayList<>(); list.add(criteriaBuilder.equal(root.get("name"),"张三")); list.add(criteriaBuilder.equal(root.get("age"),20)); Predicate[] arr=new Predicate[list.size()]; return criteriaBuilder.and(list.toArray(arr)); } }; List
list=this.userRepositorySpecification.findAll(spec); for (Users users:list){ System.out.println(users); } } / * JpaSpecificationExecutor 多条件查询方式二 */ @Test public void testJpaSpecificationExecutor3() { / * Specification:用于封装查查询条件 */ Specification
spec=new Specification
() { //Predicate:封装了单个查询条件 / * @param root 对查询对象属性的封装 * @param criteriaQuery 封装了我们要执行的查询中的各个部分的信息,select from order * @param criteriaBuilder 查询条件的构造器 * @return */ @Override public Predicate toPredicate(Root
root, CriteriaQuery
criteriaQuery, CriteriaBuilder criteriaBuilder) { //where name="张三" and age=20 / * 参数一:查询的属性 * 参数二:条件的值 */ /*List
list=new ArrayList<>(); list.add(criteriaBuilder.equal(root.get("name"),"张三")); list.add(criteriaBuilder.equal(root.get("age"),20)); Predicate[] arr=new Predicate[list.size()];*/ //(name='张三' and age=20) or id=2 return criteriaBuilder.or(criteriaBuilder.and(criteriaBuilder.equal(root.get("name"),"张三"),criteriaBuilder.equal(root.get("age"),20)),criteriaBuilder.equal(root.get("id"),1)); } }; Sort sort=new Sort(new Sort.Order(Sort.Direction.DESC,"id")); List
list=this.userRepositorySpecification.findAll(spec,sort); for (Users users:list){ System.out.println(users); } }
import javax.persistence.*; import java.util.HashSet; import java.util.Set; / * 〈一句话功能简述〉
* 〈〉 * * @author admin * @create 2019/5/23 * @since 1.0.0 */ @Entity @Table(name = "t_roles") public class Roles { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "role_id") private Integer roleId; @Column(name = "role_name") private String roleName; @OneToMany(mappedBy = "roles") private Set
users=new HashSet<>(); public Integer getRoleId() { return roleId; } public void setRoleId(Integer roleId) { this.roleId = roleId; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } public Set
getUsers() { return users; } public void setUsers(Set
users) { this.users = users; } }
package com.bjsxt.pojo; import javax.persistence.*; @Entity @Table(name="t_users") public class Users { @Id //主键id @GeneratedValue(strategy=GenerationType.IDENTITY)//主键生成策略 @Column(name="id") private Integer id; @Column(name="name") private String name; @Column(name="age") private Integer age; @Column(name="address") private String address; @ManyToOne(cascade = CascadeType.PERSIST) //表示多方 @JoinColumn(name ="role_id") //维护一个外键,外键在Users一侧 private Roles roles; public Roles getRoles() { return roles; } public void setRoles(Roles roles) { this.roles = roles; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { final StringBuffer sb = new StringBuffer("Users{"); sb.append("id=").append(id); sb.append(", name='").append(name).append('\''); sb.append(", age=").append(age); sb.append(", address='").append(address).append('\''); sb.append(", roles=").append(roles); sb.append('}'); return sb.toString(); } }
/ * 参数一 T :当前需要映射的实体 * 参数二 ID :当前映射的实体中的OID的类型 * */ public interface UsersRepository extends JpaRepository
{ }
/ * Copyright (C), 2015-2019, XXX有限公司 * FileName: ManyToManyTest * Author: admin * Date: 2019/5/23 14:19 * Description: * History: *
/ * Copyright (C), 2015-2019, XXX有限公司 * FileName: Menus * Author: admin * Date: 2019/5/23 14:06 * Description: * History: *
/ * Copyright (C), 2015-2019, XXX有限公司 * FileName: Roles * Author: admin * Date: 2019/5/23 11:02 * Description: * History: *
/ * Copyright (C), 2015-2019, XXX有限公司 * FileName: RolesRepository * Author: admin * Date: 2019/5/23 14:21 * Description: * History: *
/ * Copyright (C), 2015-2019, XXX有限公司 * FileName: ManyToManyTest * Author: admin * Date: 2019/5/23 14:19 * Description: * History: *
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199422.html原文链接:https://javaforall.net
