Spring-boot整合Spring-data-jpa

前期配置
pom.xml坐标信息

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lidadaibiao</groupId>
  <artifactId>22-spring-boot-datajpa</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-parent</artifactId> 
  <version>1.5.10.RELEASE</version> 
  </parent>
    <!-- 修改jdk版本 -->
  <properties>
  	<java.version>1.7</java.version>
  	<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
	<thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version>
  </properties>
   <dependencies>
  <!-- springBoot的启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--  thymeleaf启动器-->
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- spring-data-jpa启动器  -->需要添加的东西
    <dependency>
    	<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
     <!--  测试工具启动器-->
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
     <!-- mysql 数据库驱动 --> 需要添加的东西
   <dependency> 
	   <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId> 
    </dependency> 
    <!-- druid 数据库连接池 --> 需要添加的东西
   <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
    </dependencies>
</project>

在项目中添加application.properties配置信息

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource//连接池类型

spring.jpa.hibernate.ddl-auto=update//开启正向工程
spring-jpa.show-sql=true //显示查询语句

创建实体类

package com.lidadaibiao.pojo;

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

@Entity//该注解表明这是一个实体类
@Table(name="s_users")//表明和数据库那个表对应,或者没有表创建的表名
public class Users {
	@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;
	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() {
		return "Users [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
	}
}

编写dao接口

package com.lidadaibiao.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import com.lidadaibiao.pojo.Users;
/**
 * 
 * @author ASUS
 *JpaRepository<Users, Integer>
 * 参数1:当前需要映射的实体
 * 参数2:当前映射的实体中主键(OID)的类型
 */
public interface UsersDao extends JpaRepository<Users, Integer>{

}

测试代码

@Test
	public void test1(){
		Users users = new Users();
		users.setAddress("安阳峨眉大街");
		users.setName("小小");
		users.setAge(24);
		this.usersDao.save(users);
	}

Repository 接口讲解
1)基于方法名称命名规则查询 命名规则 2)基于@Query 注解查询JPQL SQL

package com.lidadaibiao.dao;

import java.util.List;

import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.Repository;

import com.lidadaibiao.pojo.Users;
/**
 * 1Repository 接口讲解
 * 2基于@Query 注解的查询
 * JPQL
 * @author ASUS
 *
 */
public interface UsersRepository extends Repository<Users, Integer>{
		//规则:findBy(关键字)+属性名称(属性名称的首字母大写)+查询条件(首字母大写)
		List<Users> findByName(String name);
		List<Users> findByNameLike(String name);
		List<Users> findByNameAndAge(String name,Integer age);
		//@Query 
		/**
		 * JPQL
		 * @param name
		 * @return
		 */
		@Query("from Users where name = ?")
		List<Users> queryfindByName(String name);
		@Query("from Users where name like ?")
		List<Users> queryfindNameLike(String str);
		@Query("from Users where name = ? And age = ?")
		List<Users> queryfindNameAndAge(String name,Integer age);
		/**
		 * SQL
		 * nativeQuery:默认的是 false.表示不开启 sql 查询。是否对 value 中的语句做转义。
		 */
		@Query(value="select * from s_users where name = ?",nativeQuery=true)
		List<Users> sqlfindByName(String name);
		@Query(value="select * from s_users where name like ?",nativeQuery=true)
		List<Users> sqlfindLikeName(String name);
		@Query(value="select * from s_users where name = ? and age = ?",nativeQuery=true)
		List<Users> sqlfindNameAndAge(String name,Integer age);
		@Query(value="update Users set name = ? where id = ?")
		@Modifying// //@Modifying 当前语句是一个更新语句
		void update(String name,Integer id);
}

测试类

/**
	 *  Repository 接口测试
	 */
	@Test
	public void test2(){
		List<Users> users = this.usersRepository.findByName("李大大");
		for (Users users2 : users) {
			System.out.println(users2);
		}
	}
	@Test
	public void test3(){
		List<Users> users = this.usersRepository.findByNameLike("%大");
		for (Users users2 : users) {
			System.out.println(users2);
		}
	}
	@Test
	public void test4(){
		List<Users> users = this.usersRepository.findByNameAndAge("小小", 24);
		for (Users users2 : users) {
			System.out.println(users2);
		}
	}
	/**
	 * 基于@Query 注解的查询测试
	 */
	/**
	 * JPQL
	 */
	@Test
	public void test5(){
		List<Users> queryfindByName = this.usersRepository.queryfindByName("李大大");
		for (Users users : queryfindByName) {
			System.out.println(users+"query");
		}
	}
	@Test
	public void test6(){
		List<Users> queryfindByName = this.usersRepository.queryfindNameLike("李%");
		for (Users users : queryfindByName) {
			System.out.println(users+"querylike");
		}
	}
	@Test
	public void test7(){
		List<Users> users = this.usersRepository.queryfindNameAndAge("小小", 24);
		for (Users users2 : users) {
			System.err.println("like"+" "+users2);
		}
	}
	/**
	 * SQL
	 */
	@Test
	public void test8(){
		List<Users> sqlfindByName = this.usersRepository.sqlfindByName("李大大");
		for (Users users : sqlfindByName) {
			System.out.println(users+"sql");
		}
	}
	@Test
	public void test9(){
		List<Users> sqlfindLikeName = this.usersRepository.sqlfindLikeName("李%");
		for (Users users : sqlfindLikeName) {
			System.err.println("sql"+users);
		}
	}
	@Test
	public void test10(){
		List<Users> sqlfindNameAndAge = this.usersRepository.sqlfindNameAndAge("小小", 24);
		for (Users users : sqlfindNameAndAge) {
			System.out.println(users+"sql1");
		}
	}
	@Test
	@Transactional
	@Rollback(false)
	public void test11(){
		this.usersRepository.update("大栋啊", 1);
	}

CrudRepository接口讲解

ackage com.lidadaibiao.dao;

import org.springframework.data.repository.CrudRepository;

import com.lidadaibiao.pojo.Users;
/**
 * CrudRepository接口测试
 * @author ASUS
 *
 */
public interface UsersCurdRepository extends CrudRepository<Users, Integer>{
}

测试

/**
	 * CrudRepository接口测试
	 */
	@Test
	public void test12(){
		//查询全部
		List<Users> findAll = (List<Users>)this.usersCurdRepository.findAll();
		for (Users users : findAll) {
			System.out.println(users);
		}
	}
	/**
	 * 
	 */
	@Test 
	public void test13(){
		//增加数据
		Users users = new Users();
		users.setAddress("天安门");
		users.setAge(23);
		users.setName("李雪儿");
		this.usersCurdRepository.save(users);
	}
	@Test
	public void test14(){
		//根据id查询
		Users findOne = this.usersCurdRepository.findOne(2);
		System.out.println(findOne);
	}
	@Test
	public void test15(){
		//更新操作
		Users users = new Users();
		users.setId(3);
		users.setAddress("十里铺");
		users.setAge(222);
		users.setName("小王二");
		this.usersCurdRepository.save(users);
	}

PagingAndSortingRepository接口讲解

package com.lidadaibiao.dao;

import org.springframework.data.repository.PagingAndSortingRepository;

import com.lidadaibiao.pojo.Users;
/**
 * PagingAndSortingRepository测试
 * @author ASUS
 *
 */
public interface UsersPagingAndSortingRepository extends PagingAndSortingRepository<Users, Integer>{

}

测试

**
	 * PagingAndSortingRepository测试
	 */
	@Test
	public void test16(){
		/**
		 * 分页操作
		 * Pageable:封装了分页的参数。当前页,每页显示的条数。注意他的当前页是从0开始的
		 * PageRequest(0, 2); :0当前页,2每页显示的条数
		 */
		Pageable pageable = new PageRequest(0, 2);
		Page<Users> page = this.usersPagingAndSortingRepository.findAll(pageable);
		System.out.println("总条数:"+page.getTotalElements());
		System.out.println("总页数"+page.getTotalPages());
		//查询到的数据的结果集
		List<Users> content = page.getContent();
		for (Users users : content) {
			System.out.println(users);
		}
	}
	@Test
	public void test17(){
		/**
		 * 排序
		 */
		/**
		 * Order定义排序规则
		 * Sort封装排序规则对象
		 * 参数一排序规则,参数二对那个属性规则
		 * Order order = new Order(Direction.DESC,"id");
		 * Sort sort=  new Sort(order);
		 */
		/**
		 * 参数一排序规则,参数二对那个属性规则
		 * Sort sort = new Sort(Direction.DESC,"id");
		 */
		Sort sort = new Sort(Direction.DESC,"id");
		List<Users> findAll = (List<Users>)this.usersPagingAndSortingRepository.findAll(sort);
		for (Users users : findAll) {
			System.out.println(users);
		}
	}
	/**
	 * 排序加分页
	 */
	@Test
	public void test18(){
		/*方式1
		 * Sort sort = new Sort(Direction.DESC, "id");
		 * Pageable pageable = new PageRequest(1, 3, sort);*/
		Pageable pageable  =new PageRequest(1, 3, Direction.DESC, "id");
		Page<Users> page = this.usersPagingAndSortingRepository.findAll(pageable);
		System.out.println("总条数:"+page.getTotalElements());
		System.out.println("总页数:"+page.getTotalPages());
		//查询到的结果集
		List<Users> content = page.getContent();
		for (Users users : content) {
			System.out.println(users);
		}
	}

JpaRepository接口讲解

package com.lidadaibiao.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import com.lidadaibiao.pojo.Users;
/**
 * JapRepository测试
 * @author ASUS
 *
 */
public interface UsersJpaRepository extends JpaRepository<Users, Integer>{

}

测试

/**
	 * JpaRepository接口测试
	 */
	@Test
	public void test19(){
		Pageable pageable = new PageRequest(0, 2, Direction.DESC, "id");
		Page<Users> findAll = this.usersJpaRepository.findAll(pageable);
		System.out.println("总条数:"+findAll.getTotalElements());
		System.out.println("总页数:"+findAll.getTotalPages());
		for (Users users : findAll) {
			System.out.println(users);
		}
	}

UsersJpaSpecificationExecutor接口讲解

package com.lidadaibiao.dao;
/**
 * JpaSpecificationExecutor 测试
 * @author ASUS
 *
 */

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

import com.lidadaibiao.pojo.Users;

public interface UsersJpaSpecificationExecutor extends JpaRepository<Users, Integer>,JpaSpecificationExecutor<Users>{

}

测试

/**
	 * UsersJpaSpecificationExecutor接口测试
	 */
	@Test
	public void test20(){
		/**
		 * Specification<Users>:用于封装查询条件
		 */
		Specification<Users> spec = new Specification<Users>() {
			/**
			 * Predicate:封装单个查询条件
			 * @param root 查询对象属性封装, ,
			 * @param query 封装了我们查询中的各个部分信息,select from order by
			 * @param cb 查询构造器 定义不同的查询条件
			 * @return 封装单个查询条件
			 */
			@Override
			public Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
				/**
				 * 参数一:查询的对象属性
				 * 参数二: 条件的值
				 */
				Predicate pre = cb.equal(root.get("name"),"小小");
				return pre;
			}
			
		};
		List<Users> findAll = this.usersJpaSpecificationExecutor.findAll(spec);
		for (Users users : findAll) {
			System.out.println(users);
		}
	}
		@Test
		public void test21(){
			/**
			 * 多条件查询
			 * 方式一
			 */
			Specification<Users> spec = new Specification<Users>() {

				@Override
				public Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
					/*方式一
					 * // TODO Auto-generated method stub
					List<Predicate> list = new ArrayList<Predicate>();
					list.add(cb.equal(root.get("name"),"小小"));
					list.add(cb.equal(root.get("age"),22));
					Predicate[] arr = new Predicate[list.size()];
					//list.toArray(T[] a);返回T[]
					return cb.and(list.toArray(arr));*/
					//方式二
					//return cb.and(cb.equal(root.get("name"),"小小"),cb.equal(root.get("age"),22));
					//or
					//return cb.or(cb.equal(root.get("name"),"小小"),cb.equal(root.get("age"),22));
					//or and
					return cb.or(cb.equal(root.get("name"),"大栋啊"),cb.and(cb.equal(root.get("name"),"小小"),cb.equal(root.get("age"),22)));
				}
			};
			//添加排序 
			Sort sort  = new Sort(Direction.DESC, "id");
			List<Users> findAll = this.usersJpaSpecificationExecutor.findAll(spec,sort);
			for (Users users : findAll) {
				System.out.println(users);
			}
		}
}

OneToMany 一对多关联映射
需求 角色和用户的一对多的关系
创建实体

package com.lidadaibiao.pojo;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;

@Entity//该注解表明这是一个实体类
@Table(name="s_users")//表明和数据库那个表对应,或者没有表创建的表名
public class Users {
	@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="roles_id")//维护主键
	private Roles roles = new 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() {
		return "Users [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
	}
}
package com.lidadaibiao.pojo;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity //表名这是一个实体类
@Table(name="s_roles")
public class Roles {
	@Id  //表明这是一个主键
	@GeneratedValue(strategy=GenerationType.IDENTITY)//主键生成的策略 递增
	@Column(name="rolesid")
	private Integer rolesid;
	@Column(name="rolesname")
	private String rolesname;
	//角色对用户  是一对多
	@OneToMany(mappedBy="roles")  //未来要像set集合放users 告诉是当前users里的roles所相同的
	private Set<Users> users = new HashSet<>();
	public Integer getRolesid() {
		return rolesid;
	}
	public void setRolesid(Integer rolesid) {
		this.rolesid = rolesid;
	}
	public String getRolesname() {
		return rolesname;
	}
	public void setRolesname(String rolesname) {
		this.rolesname = rolesname;
	}
	public Set<Users> getUsers() {
		return users;
	}
	public void setUsers(Set<Users> users) {
		this.users = users;
	}
	
}

接口

ackage com.lidadaibiao.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import com.lidadaibiao.pojo.Users;
/**
 * JapRepository测试
 * @author ASUS
 *
 */
public interface UsersJpaRepository extends JpaRepository<Users, Integer>{

}

测试

package com.lidadaibiao.test;


import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.lidadaibiao.App;
import com.lidadaibiao.dao.UsersJpaRepository;
import com.lidadaibiao.pojo.Roles;
import com.lidadaibiao.pojo.Users;

@RunWith(SpringJUnit4ClassRunner.class)//用RunWith启动器去启动junit和spring的一个整合
@SpringBootTest(classes={App.class})
public class OneToManyTest {
	@Autowired
	private UsersJpaRepository usersJpaRepository;
	/**
	 * 级联添加
	 */
	@Test
	public void test1(){
		//创建一个用户
		Users users = new Users();
		users.setAddress("北京王府井");
		users.setAge(22);
		users.setName("小仔");
		//创建一个角色
		Roles roles = new Roles();
		roles.setRolesname("管理员");
		//关联
		roles.getUsers().add(users);
		users.setRoles(roles);
		//操作
		this.usersJpaRepository.save(users);
	}
	/**
	 * 查询
	 */
	@Test
	public void test2(){
		Users findOne = this.usersJpaRepository.findOne(7);
		System.out.println(findOne);
		System.out.println(findOne.getRoles().getRolesname());
	}
}

级联操作多对多的实现。
需求 工作者和部门多对多
实体表

package com.lidadaibiao.pojo;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity//表名实体类
@Table(name="s_worker")
public class Worker {
	@Id//主键
	@GeneratedValue(strategy=GenerationType.IDENTITY)//生成主键的策略
	@Column(name="workerid")
	private Integer workerid;
	@Column(name="workername")
	private String workername;
	//,fetch=FetchType.EAGER 默认的延迟加载 改成立即加载
	//cascade=CascadeType.PERSIST开启级联操作
	@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
	//@JoinTable 为一个映射中间表  joinColumns 为该表的Worker外键 inverseJoinColumns则是det表的外键名
	@JoinTable(name="s_worker_det",joinColumns=@JoinColumn(name="worker_id"),inverseJoinColumns=@JoinColumn(name="det_id"))
	private Set<Det> det = new HashSet<>();
	@Override
	public String toString() {
		return "Worker [workerid=" + workerid + ", workername=" + workername + "]";
	}

	public Integer getWorkerid() {
		return workerid;
	}
	public void setWorkerid(Integer workerid) {
		this.workerid = workerid;
	}
	public String getWorkername() {
		return workername;
	}
	public void setWorkername(String workername) {
		this.workername = workername;
	}
	public Set<Det> getDet() {
		return det;
	}
	public void setDet(Set<Det> det) {
		this.det = det;
	}
}
package com.lidadaibiao.pojo;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name="s_det")
public class Det {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="detid")
	private Integer detid;
	@Column(name="detname")
	private String detname;
	@Column(name="fatherid")
	private Integer fatherid;
	//未来要向set集合放worker 告诉是当前worker里的det所相同的
	@ManyToMany(mappedBy="det")
	private Set<Worker> worker = new HashSet<>();
	@Override
	public String toString() {
		return "Det [detid=" + detid + ", detname=" + detname + ", fatherid=" + fatherid + "]";
	}
	public Integer getDetid() {
		return detid;
	}
	public void setDetid(Integer detid) {
		this.detid = detid;
	}
	public String getDetname() {
		return detname;
	}
	public void setDetname(String detname) {
		this.detname = detname;
	}
	public Integer getFatherid() {
		return fatherid;
	}
	public void setFatherid(Integer fatherid) {
		this.fatherid = fatherid;
	}
	public Set<Worker> getWorker() {
		return worker;
	}
	public void setWorker(Set<Worker> worker) {
		this.worker = worker;
	}
	
}

接口

package com.lidadaibiao.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import com.lidadaibiao.pojo.Roles;
import com.lidadaibiao.pojo.Worker;

public interface MtMJpaRepository extends JpaRepository<Worker,Integer>{

}


测试

package com.lidadaibiao.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import javax.management.relation.Role;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.lidadaibiao.App;
import com.lidadaibiao.dao.MtMJpaRepository;
import com.lidadaibiao.pojo.Det;
import com.lidadaibiao.pojo.Menus;
import com.lidadaibiao.pojo.Roles;
import com.lidadaibiao.pojo.Worker;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={App.class})
public class ManyToManyTest {
	@Autowired
	private MtMJpaRepository mtMJpaRepository;
	@Test
	public void test1(){
		//多对多的增加
		//创建工作者
		Worker worker = new Worker();
		worker.setWorkername("小王");
		//创建部门
		Det det1 = new Det();
		det1.setDetname("董事长");
		det1.setFatherid(0);
		Det det2 = new Det();
		det2.setDetname("经理");
		det2.setFatherid(1);
		//关联
		det1.getWorker().add(worker);
		det2.getWorker().add(worker);
		worker.getDet().add(det1);
		worker.getDet().add(det2);

		//操作
		this.mtMJpaRepository.save(worker);
	}
	@Test
	public void test2(){
		/**
		 * 查找
		 */
		Worker findOne = this.mtMJpaRepository.findOne(3);
		System.out.println(findOne);
		Set<Det> det = findOne.getDet();
		for (Det det2 : det) {
			System.out.println(det2);
		}
	}
}

发布了20 篇原创文章 · 获赞 17 · 访问量 1788

猜你喜欢

转载自blog.csdn.net/qq_42534991/article/details/104465813