• Spring Boot整合JPA


    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.tszr</groupId>
        <artifactId>chapter033</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.3.RELEASE</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    
            <!-- Spring Data JPA依赖启动器 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
            <!-- 阿里巴巴的Druid数据源依赖启动器 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
            </dependency>
    
            <!-- MyBatis依赖启动器 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.0</version>
            </dependency>
            <!-- MySQL数据库连接驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.28</version><!--$NO-MVN-MAN-VER$ -->
                <scope>runtime</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    server:
      port: 8082
      
    spring:
      datasource:
        name: druidDataSource
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/springbootdata?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8
          username: root
          password: admin
          initial-size: 20
          min-idle: 10
          max-active: 100
          
    mybatis:
      configuration:
        map-underscore-to-camel-case: true
      mapper-locations:
      - classpath:mapper/*.xml
      type-aliases-package: com.itheima.domain
    package com.itheima.domain;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    @Entity(name = "t_comment") // 设置ORM实体类,并指定映射的表名
    public class Discuss {
        @Id // 表明映射对应的主键id
        @GeneratedValue(strategy = GenerationType.IDENTITY) // 设置主键自增策略
        private Integer id;
        private String content;
        private String author;
        @Column(name = "a_id") // 指定映射的表字段名
        private Integer aId;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public Integer getaId() {
            return aId;
        }
    
        public void setaId(Integer aId) {
            this.aId = aId;
        }
    
        @Override
        public String toString() {
            return "Discuss{" + "id=" + id + ", content='" + content + '\'' + ", author='" + author + '\'' + ", aId=" + aId
                    + '}';
        }
    }
    package com.itheima.repository;
    
    import java.util.List;
    
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Modifying;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.itheima.domain.Discuss;
    
    public interface DiscussRepository extends JpaRepository<Discuss, Integer> {
        // 1、查询author非空的Discuss评论集合
        public List<Discuss> findByAuthorNotNull();
    
        // 2、根据文章id分页查询Discuss评论集合
        @Query("SELECT c FROM t_comment c WHERE  c.aId = ?1")
        public List<Discuss> getDiscussPaged(Integer aid, Pageable pageable);
    
        // 3、使用元素SQL语句,根据文章id分页查询Discuss评论集合
        @Query(value = "SELECT * FROM t_comment  WHERE  a_Id = ?1", nativeQuery = true)
        public List<Discuss> getDiscussPaged2(Integer aid, Pageable pageable);
    
        // 4、 根据评论id修改评论作者author
        @Transactional
        @Modifying
        @Query("UPDATE t_comment c SET c.author = ?1 WHERE  c.id = ?2")
        public int updateDiscuss(String author, Integer id);
    
        // 5、根据评论id删除评论
        @Transactional
        @Modifying
        @Query("DELETE t_comment c WHERE  c.id = ?1")
        public int deleteDiscuss(Integer id);
    }
    package com.itheima;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    package com.itheima;
    
    import java.util.List;
    import java.util.Optional;
    
    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.data.domain.Example;
    import org.springframework.data.domain.ExampleMatcher;
    import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Pageable;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import com.itheima.domain.Discuss;
    import com.itheima.repository.DiscussRepository;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class ApplicationTest {
        @Autowired
        private DiscussRepository repository;
    
        // 1、使用JpaRepository内部方法进行数据操作
        @Test
        public void selectComment() {
            Optional<Discuss> optional = repository.findById(1);
            if (optional.isPresent()) {
                System.out.println(optional.get());
            }
            System.out.println();
        }
    
        // 2、使用方法名关键字进行数据操作
        @Test
        public void selectCommentByKeys() {
            List<Discuss> list = repository.findByAuthorNotNull();
            System.out.println(list);
        }
    
        // 3、使用@Query注解进行数据操作
        @Test
        public void selectCommentPaged() {
            Pageable pageable = PageRequest.of(0, 3);
            List<Discuss> allPaged = repository.getDiscussPaged(1, pageable);
            System.out.println(allPaged);
        }
    
    //  4、使用Example封装参数进行数据查询操作
        @Test
        public void selectCommentByExample() {
            Discuss discuss = new Discuss();
            discuss.setAuthor("张三");
            Example<Discuss> example = Example.of(discuss);
            List<Discuss> list = repository.findAll(example);
            System.out.println(list);
        }
    
        @Test
        public void selectCommentByExampleMatcher() {
            Discuss discuss = new Discuss();
            discuss.setAuthor("张");
            ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("author", GenericPropertyMatchers.startsWith());
            Example<Discuss> example = Example.of(discuss, matcher);
            List<Discuss> list = repository.findAll(example);
            System.out.println(list);
        }
    }

  • 相关阅读:
    PAT天梯赛练习 L3-004 肿瘤诊断 (30分) 三维BFS
    PAT天梯赛练习 L3-003 社交集群 (30分) DFS搜索
    HDU6375双端队列
    hdu1801 01翻转 贪心
    hdu1677 贪心
    hdu2126 类01背包(三维数组的二维空间优化)
    HLOJ1361 Walking on the Grid II 矩阵快速幂
    HLOJ1366 Candy Box 动态规划(0-1背包改)
    IDEA,与gradle引入jar包报错
    StarUML激活
  • 原文地址:https://www.cnblogs.com/tszr/p/15910700.html
Copyright © 2020-2023  润新知