zoukankan      html  css  js  c++  java
  • SpringData初探

    前言

    • 项目中用到这个,没有学过,手动搭建,测试执行流程,
    • 理论的东西有时间再补充

    Maven依赖

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    
    	<groupId>com.example</groupId>
    	<artifactId>springdata-demo-1</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>jar</packaging>
    
    	<name>springdata-demo-1</name>
    	<description>Demo project for Spring Boot</description>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.0.RELEASE</version>
    		<relativePath />
    	</parent>
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    		<java.version>1.8</java.version>
    	</properties>
    	<dependencies>
    		<!-- 唯一和springdata相关的依赖包,它会自动引入相关依赖 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-data-jpa</artifactId>
    		</dependency>
    		<!-- MySQL驱动 -->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    		</dependency>
    		<!-- 阿里的连接池 -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.0.29</version>
    		</dependency>
    		<!-- 日志,可以省略getset方法及控制台日志颜色配置 -->
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    		</dependency>
    		<!-- SpringBoot热部署的依赖,可以没有 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-devtools</artifactId>
    			<scope>runtime</scope>
    		</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>
    
    

    SpringBoot配置

    • application-dev.properties
    
    server.port=8080
    logging.level.org.springframework=info
    logging.level.root=info
    
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost/db_springdata?characterEncoding=utf-8&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    spring.jpa.show-sql=true
    
    • application.properties
    spring.profiles.active=dev
    
    • 日志配置:logback-spring.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    
    <configuration>
        <!--定义一个带颜色的控制台输出日志PATTERN-->
        <property name="CONSOLE_LOG_PATTERN"
                  value="时间:%date{yyyy-MM-dd HH:mm:ss} 级别: %blue(%-5level) 进程: %magenta(%thread) 类: %green(%logger) 信息: %msg%n"/>
        <!--定义一个不带颜色的文件日志输出格式,因为文件不能带颜色-->
        <property name="ERRINFOFILE_LOG_PATTERN"
                  value="时间:%date{yyyy-MM-dd HH:mm:ss} 级别: %-5level 进程: %thread 类: %logger 信息: %msg%n"/>
        <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>
                    ${CONSOLE_LOG_PATTERN}
                </pattern>
            </layout>
        </appender>
        <root level="info">
            <appender-ref ref="consoleLog" />
        </root>
    </configuration>
    

    实体类

    package com.example.demo.dao;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
    
    import com.example.demo.domain.Person;
    
    public interface PersionDao extends JpaRepository<Person, Integer>, JpaSpecificationExecutor<Person> {
    	//根据 lastName 来获取对应的 Person
    	Person getByLastName(String lastName);
    }
    
    

    SpringBoot启动类

    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    @SpringBootApplication(scanBasePackages = "com.example.demo")
    @EnableTransactionManagement//开启事物
    public class SpringdataDemo1Application {
    
    	public static void main(String[] args) {
    		SpringApplication.run(SpringdataDemo1Application.class, args);
    	}
    }
    
    

    测试类

    package com.example.demo;
    
    import java.util.Date;
    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;
    
    import com.example.demo.dao.PersionDao;
    import com.example.demo.domain.Person;
    
    import lombok.extern.slf4j.Slf4j;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Slf4j
    public class SpringdataDemo1ApplicationTests {
    
    	@Autowired
    	private PersionDao persionDao;
    	@Test
    	public void insertTest(){
    		Person person=new Person();
    		person.setLastName("小黑");
    		person.setBirth(new Date());
    		person.setEmail("admin@coder163.com");
    		persionDao.save(person);
    	}
    	@Test
    	public void contextLoads() {
    		log.info("{}",persionDao.getByLastName("小黑"));
    	}
    
    }
    
    

    执行结果

    时间:2018-03-24 12:19:47 级别: INFO  进程: main 类: com.example.demo.SpringdataDemo1ApplicationTests 信息: Started SpringdataDemo1ApplicationTests in 2.524 seconds (JVM running for 3.189)
    Hibernate: select next_val as id_val from hibernate_sequence for update
    Hibernate: update hibernate_sequence set next_val= ? where next_val=?
    Hibernate: insert into t_peson (birth, email, lastName, id) values (?, ?, ?, ?)
    时间:2018-03-24 12:19:48 级别: INFO  进程: main 类: org.hibernate.hql.internal.QueryTranslatorFactoryInitiator 信息: HHH000397: Using ASTQueryTranslatorFactory
    Hibernate: select person0_.id as id1_0_, person0_.birth as birth2_0_, person0_.email as email3_0_, person0_.lastName as lastName4_0_ from t_peson person0_ where person0_.lastName=?
    
    

    Github代码地址 :项目代码

  • 相关阅读:
    Python join方法
    Python字符串capitalize center 方法
    Python int 中 add abs 方法
    Nginx Windows 安装启动
    Angularjs 首次加载显示{{}}
    Mysql 字符串截取
    Mysql 主键常用修改
    AES 加密256位 错误 java.security.InvalidKeyException: Illegal key size or default parameters
    Tocmat 启动错误 Port 8005 required by tomcat v7.0 server at localhost is already in use
    Socket IO Web实时推送
  • 原文地址:https://www.cnblogs.com/coder163/p/8687935.html
Copyright © 2011-2022 走看看