前言

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

Maven依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.example</groupId>
  6. <artifactId>springdata-demo-1</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>springdata-demo-1</name>
  10. <description>Demo project for Spring Boot</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>2.0.0.RELEASE</version>
  15. <relativePath />
  16. </parent>
  17. <properties>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <java.version>1.8</java.version>
  21. </properties>
  22. <dependencies>
  23. <!-- 唯一和springdata相关的依赖包,它会自动引入相关依赖 -->
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-data-jpa</artifactId>
  27. </dependency>
  28. <!-- MySQL驱动 -->
  29. <dependency>
  30. <groupId>mysql</groupId>
  31. <artifactId>mysql-connector-java</artifactId>
  32. </dependency>
  33. <!-- 阿里的连接池 -->
  34. <dependency>
  35. <groupId>com.alibaba</groupId>
  36. <artifactId>druid</artifactId>
  37. <version>1.0.29</version>
  38. </dependency>
  39. <!-- 日志,可以省略getset方法及控制台日志颜色配置 -->
  40. <dependency>
  41. <groupId>org.projectlombok</groupId>
  42. <artifactId>lombok</artifactId>
  43. </dependency>
  44. <!-- SpringBoot热部署的依赖,可以没有 -->
  45. <dependency>
  46. <groupId>org.springframework.boot</groupId>
  47. <artifactId>spring-boot-devtools</artifactId>
  48. <scope>runtime</scope>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework.boot</groupId>
  52. <artifactId>spring-boot-starter-test</artifactId>
  53. <scope>test</scope>
  54. </dependency>
  55. </dependencies>
  56. <build>
  57. <plugins>
  58. <plugin>
  59. <groupId>org.springframework.boot</groupId>
  60. <artifactId>spring-boot-maven-plugin</artifactId>
  61. </plugin>
  62. </plugins>
  63. </build>
  64. </project>

SpringBoot配置

  • application-dev.properties

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

实体类

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

SpringBoot启动类

  1. package com.example.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.transaction.annotation.EnableTransactionManagement;
  5. @SpringBootApplication(scanBasePackages = "com.example.demo")
  6. @EnableTransactionManagement//开启事物
  7. public class SpringdataDemo1Application {
  8. public static void main(String[] args) {
  9. SpringApplication.run(SpringdataDemo1Application.class, args);
  10. }
  11. }

测试类

  1. package com.example.demo;
  2. import java.util.Date;
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import org.springframework.test.context.junit4.SpringRunner;
  8. import com.example.demo.dao.PersionDao;
  9. import com.example.demo.domain.Person;
  10. import lombok.extern.slf4j.Slf4j;
  11. @RunWith(SpringRunner.class)
  12. @SpringBootTest
  13. @Slf4j
  14. public class SpringdataDemo1ApplicationTests {
  15. @Autowired
  16. private PersionDao persionDao;
  17. @Test
  18. public void insertTest(){
  19. Person person=new Person();
  20. person.setLastName("小黑");
  21. person.setBirth(new Date());
  22. person.setEmail("admin@coder163.com");
  23. persionDao.save(person);
  24. }
  25. @Test
  26. public void contextLoads() {
  27. log.info("{}",persionDao.getByLastName("小黑"));
  28. }
  29. }

执行结果

  1. 时间:2018-03-24 12:19:47 级别: INFO 进程: main 类: com.example.demo.SpringdataDemo1ApplicationTests 信息: Started SpringdataDemo1ApplicationTests in 2.524 seconds (JVM running for 3.189)
  2. Hibernate: select next_val as id_val from hibernate_sequence for update
  3. Hibernate: update hibernate_sequence set next_val= ? where next_val=?
  4. Hibernate: insert into t_peson (birth, email, lastName, id) values (?, ?, ?, ?)
  5. 时间:2018-03-24 12:19:48 级别: INFO 进程: main 类: org.hibernate.hql.internal.QueryTranslatorFactoryInitiator 信息: HHH000397: Using ASTQueryTranslatorFactory
  6. 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代码地址 :项目代码

SpringData初探的更多相关文章

  1. 初探领域驱动设计(2)Repository在DDD中的应用

    概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...

  2. CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探

    CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...

  3. 从273二手车的M站点初探js模块化编程

    前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...

  4. JavaScript学习(一) —— 环境搭建与JavaScript初探

    1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...

  5. .NET文件并发与RabbitMQ(初探RabbitMQ)

    本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址:http://www.cnblogs.com/tdws/p/5860668.html 想必MQ这两个字母对于各位前辈们和老司 ...

  6. React Native初探

    前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...

  7. jpa+springmvc+springdata(一)

    学习尚硅谷笔记: 首先配置application.xml: <?xml version="1.0" encoding="UTF-8"?> <b ...

  8. jpa+springdata

    学习爱酷学习网尚硅谷springdata笔记: 1.在 Spring 配置文件 <?xml version="1.0" encoding="UTF-8"? ...

  9. 【手把手教你全文检索】Apache Lucene初探

    PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程,仅供各位程序猿们参考,这其中不涉及任何私密话题,因此也 ...

随机推荐

  1. 命令学习_ping

    PING: ping是一个所有操作系统都支持的简单工具.我么可以利用ping来解析DNS 的A record和PTRrecord. A记录是将域名映射到IP地址,这个是ping的缺省功能, ping同 ...

  2. (4)mysql约束

    完整性约束 1.设置非空约束 not null 简称 NK约束 创建表时设置非空 CREATE TABLE tb_meng2(id INT NOT NULL,age INT); 2.设置字段默认值 默 ...

  3. MT Call来电流程分析????

  4. 运算符的基本概念以及常用Scanner、随机数Random、选择结构的初步了解

    运算符 分类 算术运算符 位运算符 关系运算符|比较运算符 逻辑运算符 条件运算符 赋值运算符 其中优先级顺序从上到下,可以记忆口诀:单目乘除位关系,逻辑三目后赋值 操作数: 运算符左右两边的数 表达 ...

  5. 09_springmvc图片上传

    一.上传图片 1.需求 在修改商品页面,添加上传商品图片的功能 2.springmvc中对多部件类型解析 在页面form中提交enctype="multipart/form-data&quo ...

  6. 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

    如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案 ...

  7. 机器学习-线性回归算法(单变量)Linear Regression with One Variable

    1 线性回归算法 http://www.cnblogs.com/wangxin37/p/8297988.html 回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,回归= ...

  8. Hibernate的Hello World!

    一.创建Java工程,新建Lib文件夹,加入Hibernate和数据库(如MySql.Oracle.SqlServer等)的Jar包 二.创建 hibernate.cfg.xml 文件,并配置,配置项 ...

  9. Oracle SQL性能优化【转】

    (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table) ...

  10. commons lang3的StringUtils中isEmpty()方法和isBlank()方法的区别

    先给结论: 1. StringUtils.isEmpty()中的空格作非空处理2. StringUtils.isNotEmpty()是StringUtils.isEmpty()取反后的结果3. Str ...