配置文件application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456 #update:只创建一次,数据累加 #create:每次都重新创建一次,数据替换 spring.jpa.hibernate.ddl-auto=update
Pet类
//表明当前是一个实体类,自动创建表t_pet与之映射,若不加name,默认创建和实体类名称一样的表pet
@Entity(name = "t_pet")
public class Pet {
//注解id,并设置主键--》自动增加
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Integer id;
// @Column标识是一个普通的字段
@Column
String pname;
@Column
String color;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public Pet() {
}
public Pet(Integer id, String pname, String color) {
this.id = id;
this.pname = pname;
this.color = color;
}
@Override
public String toString() {
return "Pet{" +
"id=" + id +
", pname='" + pname + ''' +
", color='" + color + ''' +
'}';
}
PetDao类
//JpaRepository//T:表示具体操作的实体类,Pet //ID:表示主键的类型,Integer public interface PetDao extends JpaRepository { }
测试类
@SpringBootTest
class PetApplicationTests {
//@Autowired和@Resource相同,都是表明一个对象
@Resource
PetDao petDao;
@Test
public void addPet(){
System.out.println("添加成功");
Pet pet = new Pet();
//id自增,不需要设置
pet.setPname("小狗");
pet.setColor("白色");
//完成添加操作
petDao.save(pet);
}
@Test
public void updatePet(){
System.out.println("更新成功");
Pet pet = new Pet();
pet.setId(2);
pet.setPname("小毛");
pet.setColor("花色");
//完成添加操作
petDao.save(pet);
}
@Test
void selectPet(){
Optional optionalPet = petDao.findById(1);
//调用Optional对象里的get()方法
Pet pet = optionalPet.get();
System.out.println(pet.getId()+"t"+pet.getPname()+"t"+pet.getColor());
}
//查找全部 findAll():
@Test
void findAllPet(){
List list = petDao.findAll();
//有toString方法,可以直接输出pet对象
for (Pet pet:list) {
System.out.println(pet);
}
}
//查找到的数据按pname升序排序
@Test
void findAllPets(){
List list = petDao.findAll(Sort.by("pname"));
//有toString方法,可以直接输出pet对象
for (Pet pet:list) {
System.out.println(pet);
}
}
//分页查询
@Test
void findPage(){
Pageable pageable = PageRequest.of(1,2,Sort.Direction.ASC,"id");
Page pets = petDao.findAll(pageable);
//获取元素的个数
System.out.println("元素个数"+pets.getTotalElements());
//获取页码总数
System.out.println("总页数"+pets.getTotalPages());
for (Pet pet : pets) {
System.out.println(pet);
}
}
//删除操作
@Test
void deletePet(){
//法1.通过删除对象,先查询id,然后将传入的对象删除
//Pet pet = new Pet();
//pet.setId(1);
//petDao.delete(pet);
//法2.通过id删除
petDao.deleteById(3);
System.out.println("删除成功");
}
}
2.自定义查询
PetDao接口
public interface PetDao extends JpaRepository{ //定义通过pname查询 List findByPname(String pname); //定义通过color查询 List findByColor(String color); //定义通过pname和color联合查询 List findByPnameAndColor(String pname,String color); //根据id查询,查询id在一个范围内的Pet对象 List findByIdBetweenOrderById(Integer minId,Integer maxId); //去测试类中调用 }
测试类
//自定义查找
@Test
void findPname(){
//通过pname查询
List list = petDao.findByPname("松鼠");
System.out.println(list);
//通过color查询
List listColor = petDao.findByColor("花色");
System.out.println(listColor);
//定义通过pname和color联合查询
List byPnameAndColor = petDao.findByPnameAndColor("兔兔", "花色");
System.out.println(byPnameAndColor);
//查询id:1-4之间的
List byIdBetweenOrderById = petDao.findByIdBetweenOrderById(1, 4);
System.out.println(byIdBetweenOrderById);
}
3.jpql查询
PetDao接口
//jpql查询
//@Query(value = "from pet.domain.Pet")
@Query("select A from pet.domain.Pet A")
List loadPetsList();
测试类
//jpql查询
@Test
void jpqlFind(){
List pets = petDao.loadPetsList();
System.out.println(pets);
}
2.查询pname和color
PetDao接口
@Query("select pname,color from pet.domain.Pet")
List
测试类
@Test
void test(){
List
—》查询的数据封装到Pet
//2.查询的数据封装到Pet
@Query("select new pet.domain.Pet(id,pname,color) from pet.domain.Pet pet")
List loadPetsList3();
测试类
@Test
void test1(){
List pets = petDao.loadPetsList3();
System.out.println(pets);
}



