pom.xml该有的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Student实体类创建
@Table(name="Student") 为指定数据表,注:数据库不能自动生成
@Id 为主键
@GeneratedValue(strategy = GenerationType.IDENTITY) 设为可自增
import lombok.Data;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
@Data
@Entity
@Table(name="Student")
public class Student {
/*主键 有生成策略*/
/*GeneratedValue 自动增长生成的value值*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String sex;
private Integer gradeId;
}
创建Dao层
继承JpaRepository<类,ID>接口,可自己写简单的sql语句(模糊查询...)等
import com.cx.springdatajpa.entity.Student;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface StudentDao extends JpaRepository<Student,Long> {
@Query(value = "select * from Student where name like concat('%',?,'%') ",nativeQuery = true)
Page<Student> findByName(String name, Pageable pageable);
}
创建StudentService
package com.cx.springdatajpa.service;
import com.cx.springdatajpa.entity.Student;
import org.springframework.data.domain.Page;
import java.util.List;
public interface StudentService {
Student Add(Student student);
Page<Student> findByPage(Integer page, Integer size,String name);
Student findById(Long id);
List<Student> findAll();
void delete (Long id);
Student update(Student student);
}
创建StudentServiceImpl继承StudentService
除模糊查询分页外都我为jpa自带方法。
package com.cx.springdatajpa.service.impl;
import com.cx.springdatajpa.dao.StudentDao;
import com.cx.springdatajpa.entity.Student;
import com.cx.springdatajpa.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import util.IdWorker;
import java.util.List;
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentDao studentDao;
@Override
public Student Add(Student student) {
return studentDao.save(student);
}
@Override
public Page<Student> findByPage(Integer page, Integer size,String name) {
if (page==null || page==0){
page=1;
}
Page<Student> pages = null;
PageRequest of=PageRequest.of(page-1,2);//size定死2条数据
if (name==null || name==""){//判断是否有模糊查询
pages=studentDao.findAll(of);
}else {
pages=studentDao.findByName(name,of);
}
return pages;
}
@Override
public Student findById(Long id) {
return studentDao.findById(id).get();
}
@Override
public List<Student> findAll() {
return studentDao.findAll();
}
@Override
public void delete(Long id) {
studentDao.deleteById(id);
}
@Override
public Student update(Student student) {
return studentDao.save(student);
}
}
创建StudentController层
package com.cx.springdatajpa.controller;
import ch.qos.logback.core.net.SyslogOutputStream;
import com.cx.springdatajpa.entity.Student;
import com.cx.springdatajpa.service.impl.StudentServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class StudentController {
@Autowired
private StudentServiceImpl studentService;
@RequestMapping(value = {"/index",""})
public String findAll(Integer page,Integer size, Model model, String name){
Page<Student> pages=studentService.findByPage(page,size,name);
model.addAttribute("pages",pages);
model.addAttribute("name",name);
return "index";
}
@GetMapping("/edit")
public String edit(Long id,Model model){
if (id==null){
}else {
model.addAttribute("student",studentService.findById(id));
}
return "edit";
}
@GetMapping("del")
public String del(Long id){
studentService.delete(id);
return "redirect:/index";
}
@PostMapping("add")
public String add(Student student){
studentService.Add(student);
return "redirect:/index";
}
@PostMapping("upd")
public String upd(Student student){
studentService.update(student);
return "redirect:/index";
}
}