栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合jpa项目入门级别demo

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合jpa项目入门级别demo

springboot整合jpa项目入门级别demo

前言一、新建一个空boot项目二、准备好数据库,下面以MySQL为主三、导入依赖四、生成JPA实体五、JPA基本注解六、JPQL 和 EntityManager七、配置文件八、demo包

前言

简单基础入门级别,有基础勿留香! 一、新建一个空boot项目

傻瓜式创建即可 二、准备好数据库,下面以MySQL为主

创建好测试表dog表,待用
三、导入依赖

下面依赖,后续会用到,直接贴上了

 
     org.springframework.boot
     spring-boot-starter-web
 
 
     org.springframework.boot
     spring-boot-starter-data-jpa
 

 
     mysql
     mysql-connector-java
     runtime
 

 
     org.projectlombok
     lombok
     1.16.14
 
 
     com.alibaba
     fastjson
     1.2.76
 
 
四、生成JPA实体

JPA自动生成 JPA 实体类(idea).

五、JPA基本注解

@entity@Table(name=“table_name”)
当前实体与其映射的数据库表名不同时需要加此注解,如果一致,不加也行@Id 主键@GeneratedValue
主键的生成策略,例:@GeneratedValue(strategy = GenerationType.AUTO)@Basic
表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的getXXX()方法,默认即为@basic,会把XXX映射为数据库的一列
即:如果在实体的get方法上没加注解,则默认加了@Basic(此注解加不加都行)@Column(name = “dog_name”) 映射数据库字段名@Transient 表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段的映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@basic@Temporal(TemporalType.DATE)
在进行属性映射时可使用此注解来调整数据库存储日期的精度(通过设置:TemporalType.DATE,TemporalType.TIMESTAMP) 六、JPQL 和 EntityManager

简单入门代码如下:实体:JPA自动生成的

package com.liu.susu.pojo;

import javax.persistence.*;
import java.util.Objects;

@NamedQuery(name = "testNamedQuery",query = "select d from com.liu.susu.pojo.Dog d")
@Entity
public class Dog {
    private int dogNum;
    private String dogName;
    private String dogKind;
    private Integer dogAge;
    private String decision;


    public Dog(){

    }

    public Dog(int dogNum, String dogName) {
        this.dogNum = dogNum;
        this.dogName = dogName;
    }

    @Id
    @Column(name = "dog_num")
    public int getDogNum() {
        return dogNum;
    }

    public void setDogNum(int dogNum) {
        this.dogNum = dogNum;
    }

    @Basic
    @Column(name = "dog_name")
    public String getDogName() {
        return dogName;
    }

    public void setDogName(String dogName) {
        this.dogName = dogName;
    }

    @Basic
    @Column(name = "dog_kind")
    public String getDogKind() {
        return dogKind;
    }

    public void setDogKind(String dogKind) {
        this.dogKind = dogKind;
    }

    @Basic
    @Column(name = "dog_age")
    public Integer getDogAge() {
        return dogAge;
    }

    public void setDogAge(Integer dogAge) {
        this.dogAge = dogAge;
    }

    @Basic
    @Column(name = "decision")
    public String getDecision() {
        return decision;
    }

    public void setDecision(String decision) {
        this.decision = decision;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Dog dog = (Dog) o;
        return dogNum == dog.dogNum && Objects.equals(dogName, dog.dogName) && Objects.equals(dogKind, dog.dogKind) && Objects.equals(dogAge, dog.dogAge) && Objects.equals(decision, dog.decision);
    }

    @Override
    public int hashCode() {
        return Objects.hash(dogNum, dogName, dogKind, dogAge, decision);
    }
}

两个dao

package com.liu.susu.dao;

import com.liu.susu.pojo.Dog;
import org.springframework.data.jpa.repository.JpaRepository;

public interface DogDao extends JpaRepository {

}
package com.liu.susu.dao;

import com.liu.susu.pojo.Dog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;


public interface DogDao2 extends JpaRepository {
    
    @Query(value = "from com.liu.susu.pojo.Dog")
    List getDogList();

    
    @Query(value = "select d from com.liu.susu.pojo.Dog d")
    List getDogList2();

    
    @Query(value = "select dogNum,dogName from com.liu.susu.pojo.Dog d")
    List getDogObjectList();

    
    @Query(value = "select new com.liu.susu.pojo.Dog(dogNum,dogName) from com.liu.susu.pojo.Dog d")
    List getDogList3();

    
    @Query(value = "select d from com.liu.susu.pojo.Dog d where d.dogAge=?1")
    List getDogList0(int dogAge);


}

4个controller

package com.liu.susu.controller;

import com.alibaba.fastjson.JSONObject;
import com.liu.susu.dao.DogDao;
import com.liu.susu.pojo.Dog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("/dog/dao1")
public class DogDaoController {

    @Autowired
    private DogDao dogDao;

    
    @ResponseBody
    @RequestMapping("/all")
    public String testFindAll(){
        List dogList = dogDao.findAll();
        return JSONObject.toJSONString(dogList);
    }
    
    @ResponseBody
    @RequestMapping("/all2")
    public List testFindAll2(){
//        List dogList = dogDao.findAll(Sort.by("dogAge"));//默认升序
        List dogList = dogDao.findAll(Sort.by("dogAge").descending());
        return dogList;
    }
    
    @ResponseBody
    @RequestMapping("/save")
    public List testSave(){
        Dog dog = new Dog();
        dog.setDogNum(1005);//主键要加
        dog.setDogName("酥妮");
        dog.setDogAge(1);
        dogDao.save(dog);//保存新增
        List dogList = dogDao.findAll();
        return dogList;
    }

}
package com.liu.susu.controller;

import com.liu.susu.dao.DogDao2;
import com.liu.susu.pojo.Dog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;


@Controller
@RequestMapping("/dog/dao2")
public class DogDao2Controller {
    @Autowired
    private DogDao2 dogDao2;

    @ResponseBody
    @RequestMapping("/list")
    private List getDogList(){
        List dogList = dogDao2.getDogList();
        return dogList;
    }
    @ResponseBody
    @RequestMapping("/list2")
    private List getDogList2(){
        List dogList = dogDao2.getDogList2();
        return dogList;
    }
    @ResponseBody
    @RequestMapping("/objList")
    private List getDogObjectList(){
        List dogObjectList = dogDao2.getDogObjectList();
        return dogObjectList;
    }
    @ResponseBody
    @RequestMapping("/list3")
    private List getDogList3(){
        List dogList = dogDao2.getDogList3();
        return dogList;
    }
    
    @ResponseBody
    @RequestMapping("/listByDogAge")
    private List getDogListByParam(@RequestParam int dogAge){
        List dogList = dogDao2.getDogList0(dogAge);
        return dogList;
    }

}
package com.liu.susu.controller;

import com.liu.susu.pojo.Dog;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.Transactional;
import java.util.List;

@Controller
@RequestMapping("/dog/entityManager1")
public class EntityManagerController {

    @PersistenceContext
    private EntityManager entityManager;

    @ResponseBody
    @RequestMapping("/list1")
    public List getDogList(){
        String sql = "select * from dog";
        List dogList = entityManager.createNativeQuery(sql)
                .getResultList();//结果只有属性值,没有属性名
        return dogList;
    }
    @ResponseBody
    @RequestMapping("/list2")
    public List getDogList2(){
        String sql = "select * from dog";
        List dogList = entityManager.createNativeQuery(sql,Dog.class)
                .getResultList();//结果===>有属性名
        return dogList;
    }
    
    @ResponseBody
    @RequestMapping("/dog1")
    public Dog getDogByNum(@RequestParam Integer dogNum){
        String sql = "select * from dog d where d.dog_num=?1";
        Query query = entityManager.createNativeQuery(sql,Dog.class);
        query.setParameter(1,dogNum);
        Dog dog = (Dog) query.getSingleResult();
        return dog;
    }
    @ResponseBody
    @RequestMapping("/save")
    @Transactional()//事务注解 记得加
    public String testPersist(){
        Dog dog = new Dog();
        dog.setDogNum(1006);
        dog.setDogName("测试");
        dog.setDogAge(0);
        entityManager.persist(dog);//直接insert
        return "ok";
    }
    @ResponseBody
    @RequestMapping("/merge")
    @Transactional()//事务注解 记得加
    public String testMerge(){
        Dog dog = new Dog();
        dog.setDogNum(1006);
        dog.setDogName("测试2");
        dog.setDogAge(0);
        entityManager.merge(dog);//内部原理:先根据主键查询再update
        return "ok";
    }

}

package com.liu.susu.controller;

import com.liu.susu.pojo.Dog;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;

@Controller
@RequestMapping("/dog/jpqlAndEntityManager")
public class JpqlAndEntityManagerController {

    @PersistenceContext
    private EntityManager entityManager;

    @ResponseBody
    @RequestMapping("/list1")
    public List getDogList(){
        List dogList = entityManager.createNamedQuery("testNamedQuery")
                .getResultList();
        return dogList;
    }

}

七、配置文件

配置

server.port=8993
# 应用名称
spring.application.name=springboot-jpa
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/liu?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root

#spring.jpa.generate-ddl=true
#spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=true
# 指定数据库得类型
spring.jpa.database-platform=org.hibernate.dialect.MySQL57InnoDBDialect

pom



    4.0.0
    com.liu.susu
    springboot-jpa
    0.0.1-SNAPSHOT
    springboot-jpa
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.3.2.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        

        
            mysql
            mysql-connector-java
            runtime
        

        
            org.projectlombok
            lombok
            1.16.14
        
        
            com.alibaba
            fastjson
            1.2.76
        
        

    


    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.3.7.RELEASE
                
                    com.liu.susu.SpringbootJpaApplication
                
                
                    
                        repackage
                        
                            repackage
                        
                    
                
            
        
    



八、demo包

spring boot整合JPA——demo

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号