1. Insert statements
@Transactional @Query(value = "insert into number_rule values(? 1,? 2)", nativeQuery = true) @Modifying int insertRule(int nums,int rule);Copy the code
Update statement
@Transactional @Query(value = "update number_count set count = ? 1", nativeQuery = true) @Modifying public void updateCount(int count);Copy the code
3. Query statement
@Transactional
@Query(value = "select count from number_count")
@Modifying
Count selectCount();
Copy the code
Delete statement
@Transactional @Modifying @Query(value = "delete from number_count where count =? 1",nativeQuery = true) int deleteCount(int count);Copy the code
Note: do not add @ Transactional might throw javax.mail. Persistence. TransactionRequiredException: abnormal, after I was thrown exception to add.
The @Transactional, @Query, and @modifying annotations are all required
NativeQuery = true means using native SQL
Here is the complete code:
package com.example.demo.mapper; import com.example.demo.entity.Count; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; /** * counter database mapping ** @author BWS * @date 2019/8/30 **/ @Component public Interface CountMapper extends JpaRepository<Count, Integer> {/* * we inherit JpaRepository directly here * * this is already a lot of live methods * * */ @transactional @query (value = "update ") number_count set count = ? 1", nativeQuery = true) @Modifying public void updateCount(int count); }Copy the code
package com.example.demo.controller; import com.example.demo.entity.Count; import com.example.demo.mapper.CountMapper; import com.example.demo.service.DisorderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Calendar; import java.util.List; import java.util.Random; @author zhaohualuo * @date 2019/8/30 **/ @restController Public class DisorderController {@autoWired CountMapper countMapper; @GetMapping("/list") public int findAll() { return countMapper.updateCount(1); }}Copy the code
package com.example.demo.entity; import lombok.Data; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * add Entity class ** @author BWS * @date 2019/8/30 **/ @data @entity @table (name = "number_count") public class Count {@id private int count; }Copy the code
application.yml
spring:
devtools:
restart:
enabled: false
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/xxx
username: xxx
password: xxx
jpa:
hibernate:
ddl-auto: update
show-sql: true
database-platform: org.hibernate.dialect.PostgreSQLDialect
properties:
hibernate:
temp:
use_jdbc_metadata_defaults: false
Copy the code
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}Copy the code
pom.xml
<? The XML version = "1.0" encoding = "utf-8"? > < 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 https://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < the parent > < groupId > org. Springframework. Boot < / groupId > The < artifactId > spring - the boot - starter - parent < / artifactId > < version > 2.1.7. RELEASE < / version > < relativePath / > <! -- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name> Demo </name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <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-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</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> </project>Copy the code
After starting the project, access the following address:
http://localhost:8080/list
Personal public account: Java Architects Association, updated daily technical good articles