SpringBoot integration Spring Data JPA

Spring Data JPA can help developers complete the crud work by declaring the persistence layer interface

rely

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

And establish a database entity classes
(see previous blog )

Repository layer

Declare Repository

package com.zzf.demo.repository;

import com.zzf.demo.model.ZUser;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Collection;
import java.util.List;

/*
 *
 *@author:zzf
 *@time:2020-11-16
 *
 */
public interface ZUserRepository extends JpaRepository<ZUser,String> {
    
    

    //自定义查询

    //通过名字相等查询
    List<ZUser> findByName(String name);

    //通过名字like查询
    List<ZUser> findByNameLike(String name);

    //通过主键id集合查询
    List<ZUser> findByIdIn(Collection<String> ids);
}

model layer

Modify the entity class to

package com.zzf.demo.model;

import lombok.Data;

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

/*
 *
 *@author:zzf
 *@time:2020-11-16
 *
 */
@Entity
@Table(name = "zuser")
@Data
public class ZUser {
    
    
    //主键
    @Id
    private String id;
    //用户名
    private String name;
    //密码
    private String password;


}

Service layer

package com.zzf.demo.service;

import com.zzf.demo.model.ZUser;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Collection;
import java.util.List;

/*
 *
 *@author:zzf
 *@time:2020-11-16
 *
 */
public interface ZUserService {
    
    
    //查询
    ZUser findById(String id);
    List<ZUser> findAll();
    //保存和更新
    ZUser save(ZUser zUser);
    //删除
    void delete(String id);
    //分页
    Page<ZUser> findAll(Pageable pageable);

    //通过名字相等查询
    List<ZUser> findByName(String name);

    //通过名字like查询
    List<ZUser> findByNameLike(String name);

    //通过主键id集合查询
    List<ZUser> findByIdIn(Collection<String> ids);
}

ServiceImpl

package com.zzf.demo.service.impl;

import com.zzf.demo.model.ZUser;
import com.zzf.demo.repository.ZUserRepository;
import com.zzf.demo.service.ZUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.List;

/*
 *
 *@author:zzf
 *@time:2020-11-16
 *
 */
@Service
public class ZUserServiceImpl implements ZUserService {
    
    
    @Autowired
    private ZUserRepository zUserRepository;
    @Override
    public ZUser findById(String id) {
    
    
        return zUserRepository.findById(id).get();
    }

    @Override
    public List<ZUser> findAll() {
    
    
        return zUserRepository.findAll();
    }

    @Override
    public ZUser save(ZUser zUser) {
    
    
        return zUserRepository.save(zUser);
    }

    @Override
    public void delete(String id) {
    
    

        zUserRepository.deleteById(id);
    }

    @Override
    public Page<ZUser> findAll(Pageable pageable) {
    
    
        return zUserRepository.findAll(pageable);
    }

    @Override
    public List<ZUser> findByName(String name) {
    
    
        return zUserRepository.findByName(name);
    }

    @Override
    public List<ZUser> findByNameLike(String name) {
    
    
        return zUserRepository.findByNameLike(name);
    }

    @Override
    public List<ZUser> findByIdIn(Collection<String> ids) {
    
    
        return zUserRepository.findByIdIn(ids);
    }
}

Pageable needs to parameter the number of pages, the size of each page, the returned result is encapsulated in Page

test

package com.zzf.demo;

import com.zzf.demo.model.ZUser;
import com.zzf.demo.service.ZUserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.util.Assert;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

@SpringBootTest
class DemoApplicationTests {
    
    

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    void contextLoads() {
    
    

        String sql = "select id,name,password from zuser";
        List<ZUser> userList = jdbcTemplate.query(sql, new RowMapper<ZUser>() {
    
    
            @Override
            public ZUser mapRow(ResultSet resultSet, int i) throws SQLException {
    
    
                ZUser user = new ZUser();
                user.setId(resultSet.getString("id"));
                user.setName(resultSet.getString("name"));
                user.setPassword(resultSet.getString("password"));

                return user;
            }
        });
        System.out.println("查询成功:");
        for (ZUser user : userList
        ) {
    
    
            System.out.println(user.toString());
        }
    }

    @Autowired
    private ZUserService zUserService;

    @Test
    void testRepository() {
    
    
        //查询所有数据
        List<ZUser> userList = zUserService.findAll();
        for (ZUser user : userList
        ) {
    
    
            System.out.println(user.toString());
        }

        //通过name查询
        List<ZUser> userList2 = zUserService.findByName("小T");
        for (ZUser user : userList2
        ) {
    
    
            System.out.println(user.toString());
        }
        Assert.isTrue(userList2.get(0).getName().equals("小T"), "data error!!");

        //通过name模糊查询
        List<ZUser> userList3 = zUserService.findByName("%小%");
        for (ZUser user : userList2
        ) {
    
    
            System.out.println(user.toString());
        }
        //Assert.isTrue(userList2.get(0).getName().equals("小T"),"data error!!");
        //通过ID集合查询
        List<String> ids = new ArrayList<>();
        ids.add("1");
        ids.add("2");
        List<ZUser> userList4 = zUserService.findByIdIn(ids);
        for (ZUser user : userList4
        ) {
    
    
            System.out.println(user.toString());
        }
        //增加数据
        ZUser zUser = new ZUser();
        zUser.setId("3");
        zUser.setName("test");
        zUser.setPassword("123");
        zUserService.save(zUser);
        //分页查询
        //PageRequest pageRequest=new PageRequest(0,10);
        PageRequest pageRequest = PageRequest.of(1, 2);
        Page<ZUser> userList5 = zUserService.findAll(pageRequest);
        for (ZUser user : userList5
        ) {
    
    
            System.out.println(user.toString());
        }
        System.out.println(userList5.getTotalPages() + "/" + userList5.getSize());
        //删除
        zUserService.delete("3");
        //分页查询
        //PageRequest pageRequest=new PageRequest(0,10);
        PageRequest pageRequest2 = PageRequest.of(1, 2);
        Page<ZUser> userList6 = zUserService.findAll(pageRequest2);
        System.out.println(userList6.getTotalPages() + "/" + userList6.getSize());
    }
}

Guess you like

Origin blog.csdn.net/qq_43610675/article/details/109731952