springboot + jpa IDEA下 demo

正在学习jpa+springboot。

jpa的优势是快捷开发。

实体类的注解会帮助你自动生成表。

jpa自带的方法使你不用写sql.

大多地方我都加了注释。我也正在学习所以存在诸多不足请见谅。

工程内有一些是次日要用到的文件夹 没截图的就是与本次demo 无关的内容。

最后希望能帮到你。

步骤如下:

1.创建一个 基础的springBoot项目。

不添加任何依赖,

手动在pom.xml 文件中添加 如下依赖

 

        <!--springboot的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--测试方法的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--jpa 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

配置application.properties文件

 

#数据库连接地址
spring.datasource.url=jdbc:mysql://192.168.100.39:3306/training_camp?useSSL=false&serverTimezone=UTC
#数据库账号
spring.datasource.username= training_camp
#数据库密码
spring.datasource.password= haylion
#数据库驱动
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
#jpa设置 此处可百度一下。 create 和别的的区别。
spring.jpa.hibernate.ddl-auto= create
#是否在控制台显示数据库语句
spring.jpa.show-sql=true

controller 层

dao层

package com.haylion.springboot.dao;

import com.haylion.springboot.entity.Mengpeng;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;

/**
 * jpa方式小demo
 */
public interface UserRepository extends JpaRepository<Mengpeng, Long> {

    // 通过名称找到用户
    Mengpeng findByName(String name);

    // 通过名称和年龄找到用户
    Mengpeng findByNameAndAge(String name, Integer age);

    // 通过名称模糊查询
    List<Mengpeng> findByNameLike(String name);

    // 使用sql查询
    @Query(value = "select * from mengpeng where name = ?1 and age = ?2", nativeQuery = true)//?1表示第一个参数,?2表示第二个参数
    Mengpeng findBySQL(String name, Integer age);

/*  //不能这样用会出错。数据库交互通过不了。
    @Query(value = "update mengpeng set name =?1  where id = ?2", nativeQuery = true)//?1表示第一个参数,?2表示第二个参数
    void updateySQL(String name, Long id);
*/

}

实体类啊。


package com.haylion.springboot.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Mengpeng {
    @Id //id
    @GeneratedValue //表自增
    private Long id;
    @Column(length = 32) //设置长度
    private String name;
    @Column(nullable = false) //创建时不为空
    private Integer age;

    public Mengpeng() {
    }

    public Mengpeng(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    public Mengpeng(Long id,String name, Integer age) {
        this.id=id;
        this.name = name;
        this.age = age;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Mengpeng{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

service层

package com.haylion.springboot.service;

import com.haylion.springboot.dao.UserRepository;
import com.haylion.springboot.entity.Mengpeng;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    /**
     * 通过姓名获取用户信息
     * @param name
     * @return
     */
    public Mengpeng getUserService(String name){
        Mengpeng mengpeng=new Mengpeng();
        try{
            mengpeng=userRepository.findByName(name);
        }catch (Exception e){
            e.printStackTrace();
        }
        return mengpeng;
    }

    /**
     * 添加用户信息
     * @param mengpeng
     * @return
     */
    public void addUserService(Mengpeng mengpeng){
        try{
            userRepository.save(mengpeng);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 删除用户信息
     * @param mengpeng
     */
    public void deleteUserService(Mengpeng mengpeng){
        try{
            userRepository.delete(mengpeng);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 修改用户
     * @param mengpeng
     */
    public void updateUserService(Mengpeng mengpeng){
    try{
            userRepository.save(mengpeng);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

测试方法

package com.haylion.springboot;


import com.haylion.springboot.dao.UserRepository;
import com.haylion.springboot.entity.Mengpeng;
import com.haylion.springboot.service.HelloService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootApplicationTests {

    @Autowired
    private UserRepository userDao;

    @Test
    public void contextLoads() {

        //修改设置项 每次都删除表,才能运行此测试项。
        userDao.save(new Mengpeng("QQQ",1));
        userDao.save(new Mengpeng("WWW",2));
        userDao.save(new Mengpeng("EEE",3));
        userDao.save(new Mengpeng("AAA",4));
        userDao.save(new Mengpeng("SSS",5));
        userDao.save(new Mengpeng("DDD",6));
        userDao.save(new Mengpeng("ZZZ",7));
        userDao.save(new Mengpeng("XXX",8));
        userDao.save(new Mengpeng("CCC",9));
        userDao.save(new Mengpeng("QQQ2",10));


        //二者一致则继续运行不一致则抛出异常。
        // 测试findAll, 查询所有记录
        Assert.assertEquals(10, userDao.findAll().size());
        System.out.println("共有"+userDao.findAll().size()+"条记录");

        // 测试findByName, 查询姓名为AAA的User
        Assert.assertEquals(4, userDao.findByName("AAA").getAge().longValue());
        System.out.println(userDao.findByName("AAA").toString());
        // 测试findByHQL, 查询姓名为AAA的User
     //   Assert.assertEquals(4, userDao.findByHQL("AAA").getAge().longValue());

        // 测试findByNameAndAge, 查询姓名为SSS并且年龄为5的User
        Assert.assertEquals("SSS", userDao.findByNameAndAge("SSS", 5).getName());

        // 测试findBySQL, 查询姓名为SSS并且年龄为5的User
        Assert.assertEquals("SSS", userDao.findBySQL("SSS", 5).getName()) ;
        System.out.println("名为SSS,年龄为5的用户"+userDao.findBySQL("SSS",5).toString());
        // 测试删除姓名为AAA的User
        userDao.delete(userDao.findByName("AAA"));

        // 测试findAll, 查询所有记录, 验证上面的删除是否成功
        Assert.assertEquals(9, userDao.findAll().size());

        // 测试findAll, 查询名字有Q的有几个
        Assert.assertEquals(2,userDao.findByNameLike("%Q%").size());
    }

}

注意看注释,以上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 和 JPA(Java Persistence API)结合通常用于简化企业级应用的开发,它们提供了强大的数据库操作能力和自动配置的功能。以下是创建一个基本的 Spring Boot + JPA 项目的步骤: 1. **设置环境**: - 安装 Java SDK 和 Maven 或 Gradle 构建工具。 - 创建一个新的 Spring Boot 项目,可以通过 IntelliJ IDEA、Eclipse 或命令行工具如 `spring Initializr` 来创建。 2. **添加依赖**: 在你的 `pom.xml` (Maven) 或 `build.gradle` (Gradle) 文件中,添加以下 JPA 和数据源相关的依赖: ```xml <!-- Maven --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- Gradle --> implementation 'org.springframework.boot:spring-boot-starter-data-jpa' ``` 3. **配置数据库**: - 在 `application.properties` 或 `application.yml` 中提供数据库连接信息,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=myuser spring.datasource.password=mypassword spring.jpa.hibernate.ddl-auto=update ``` 4. **实体类定义**: 创建一个或多个代表数据库表的实体类(`MyEntity.java`),继承自 `JpaRepository` 或具体的 Entity 接口,例如: ```java @Entity public class MyEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // ...字段和getter/setter方法 } interface MyRepository extends JpaRepository<MyEntity, Long> {} ``` 5. **配置扫描包**: 在主类上添加 `@EnableJpaRepositories` 注解,指定扫描 Repository 接口的位置: ```java @SpringBootApplication @EnableJpaRepositories(basePackages = "com.example.myapp.repository") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 6. **运行应用**: 使用构建工具构建并运行项目,Spring Boot 将自动配置 JPA 并创建数据库表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值