1.项目结构
2.pom.xml
< ? 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>
< parent>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- parent< / artifactId>
< version> 2.1 .9 . RELEASE< / version>
< relativePath/ > < ! -- lookup parent from repository -- >
< / parent>
< groupId> org. lq< / groupId>
< artifactId> sb_02< / artifactId>
< version> 1.0 < / version>
< name> demo- 2 < / 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- thymeleaf< / 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. 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>
< dependency>
< groupId> com. oracle. jdbc< / groupId>
< artifactId> ojdbc< / artifactId>
< version> 6.0 < / version>
< / dependency>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- data- jpa< / artifactId>
< / dependency>
< / dependencies>
< build>
< plugins>
< plugin>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- maven- plugin< / artifactId>
< / plugin>
< / plugins>
< / build>
< / project>
3.spring boot的配置,application.yml
server:
port: 8686
servlet:
context- path: / boot
tomcat:
uri- encoding: utf- 8
spring:
datasource:
username: wuyu
password: root
url: jdbc: oracle: thin: @localhost : 1521 : orcl
driver- class - name: oracle. jdbc. OracleDriver
jpa:
show- sql: true
database: oracle
hibernate:
ddl- auto: update
jdbc:
username: wuyu
password: root
4.dao层继承JpaRepository
package org. lq. dao;
import java. util. List;
import org. lq. entity. Person;
import org. springframework. data. jpa. repository. JpaRepository;
import org. springframework. data. jpa. repository. Query;
import org. springframework. data. repository. query. Param;
public interface PersonDao extends JpaRepository < Person, Integer> {
@Query ( "from Person p where p.name like concat(concat('%',:pname),'%')" )
List< Person> likeByName ( @Param ( "pname" ) String name) ;
}
5.实体类
package org. lq. entity;
import javax. persistence. Column;
import javax. persistence. Entity;
import javax. persistence. GeneratedValue;
import javax. persistence. GenerationType;
import javax. persistence. Id;
import javax. persistence. SequenceGenerator;
import javax. persistence. Table;
import javax. persistence. Transient;
import lombok. AllArgsConstructor;
import lombok. Builder;
import lombok. Data;
import lombok. NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table ( name = "tab_person" )
public class Person {
@Id
@GeneratedValue ( strategy = GenerationType. SEQUENCE, generator = "my_person_seq" )
@SequenceGenerator ( name = "my_person_seq" , sequenceName = "person_seq" )
private int id;
private String name;
private String username;
private String password;
@Column ( name = "person_age" )
private int age;
@Transient
private String test;
}
6.Junit测试
package org. lq;
import java. sql. SQLException;
import java. util. ArrayList;
import java. util. Iterator;
import java. util. List;
import javax. sql. DataSource;
import org. junit. Test;
import org. junit. runner. RunWith;
import org. lq. dao. PersonDao;
import org. lq. entity. Person;
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 Demo2ApplicationTests {
@Autowired
DataSource datasource;
@Autowired
PersonDao dao;
@Test
public void PersonDaoTest ( ) {
List< Person> li = new ArrayList < > ( ) ;
li. add ( Person. builder ( ) . age ( 47 ) . name ( "李四1" ) . username ( "lisi1" ) . password ( "admin123" ) . build ( ) ) ;
li. add ( Person. builder ( ) . age ( 48 ) . name ( "李四2" ) . username ( "lisi2" ) . password ( "admin123" ) . build ( ) ) ;
li. add ( Person. builder ( ) . age ( 49 ) . name ( "李四3" ) . username ( "lisi3" ) . password ( "admin123" ) . build ( ) ) ;
dao. saveAll ( li) ;
}
@Test
public void contextLoads ( ) {
try {
System. out. println ( datasource. getConnection ( ) ) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
}
7.关键点
1.实体类中使用JPA注解配置,和数据库表关联 2.application.yml中层次结构配置的书写 3.dao继承JpaRepository