spring-Data-Jpa(简易增删改查) 一

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";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值