数据库使用MySQL,ORM使用spring data jpa

1 因此需要再pom.xml文件中添加相应jar包。如下:

    <!-- 引入jap -->
<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>

 2 在application.properties文件中添加配置。如下:

spring.datasource.url=jdbc:mysql://localhost:3306/cfj_test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true

注:

其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构,有四个值:
        create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
        create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
        update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
        validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

dialect 主要是指定生成表名的存储引擎为InneoDB
show-sql 是否打印出自动生产的SQL,方便调试的时候查看

3 添加实体类

package com.cfj.testboot.domain;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; @Entity
public class UserDo implements Serializable{ private static final long serialVersionUID = 1L; @Id
@GeneratedValue
private Integer id;
private String userName;
private String passWord; public UserDo() { } public UserDo(String userName,String passWord) {
this.userName = userName;
this.passWord = passWord; } public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
} public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
} @Override
public String toString() {
return "UserDo [id=" + id + ", userName=" + userName + ", passWord=" + passWord + "]";
} }

4 创建Dao(JPA 一般叫做Repository 比如UserRepository)

几乎不用写实现类

继承对应的jpa 接口即可。比如继承:CrudRepository或者PagingAndSortingRepository或者JpaRepository或者JpaSpecificationExecutor

package com.cfj.testboot.domain;

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<UserDo, Integer>{

    UserDo findByUserName(String userName);//按照名字查询

}

5 测试

需要在pom.xml增加jar包配置。如下:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

测试类如下:

package com.cfj.testboot.domain;

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.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class UserRepositoryTests { @Autowired
private UserRepository userRepository; @Test
public void test() throws Exception { userRepository.save(new UserDo("aa1", "11"));
userRepository.save(new UserDo("bb2", "22")); } @Test
public void testFind() throws Exception { UserDo u = userRepository.findByUserName("aa1");
System.out.println(u.getUserName()); } }
  参考:http://www.ityouknow.com/springboot/2016/02/03/spring-boot-web.html

https://www.cnblogs.com/kxm87/p/9268622.html的更多相关文章

  1. 访问路径:https://i.cnblogs.com/posts?categoryid=925678

    https://i.cnblogs.com/posts?categoryid=925678

  2. URL https://i.cnblogs.com/EditPosts.aspx?opt=1

    URL url = new URL("https://i.cnblogs.com");URL url1 = new URL(url, "EditPosts.aspx?op ...

  3. 随笔二-https://www.cnblogs.com/shang1680/p/9657994.html

    作业要求来自https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 GitHub远程仓库的地址:https://github.com/ ...

  4. 211806189杨昊辰 https://www.cnblogs.com/honey1433223/

    211806189杨昊辰 https://www.cnblogs.com/honey1433223/

  5. https://www.cnblogs.com/h2zZhou/p/5440271.html

    https://www.cnblogs.com/h2zZhou/p/5440271.html

  6. https://www.cnblogs.com/soundcode/p/4174410.html

    https://www.cnblogs.com/soundcode/p/4174410.html 1.首先要在服务器端新建一个网站axpx页 然后再网站的后台写代码获取winform传过来的文件名. ...

  7. https://www.cnblogs.com/yudanqu/p/9467803.html

    https://www.cnblogs.com/yudanqu/p/9467803.html

  8. 转发自:一像素 十大经典排序算法(动图演示)原链接:https://www.cnblogs.com/onepixel/articles/7674659.html 个人收藏所用 侵删

    原链接:https://www.cnblogs.com/onepixel/articles/7674659.html     个人收藏所用   侵删 0.算法概述 0.1 算法分类 十种常见排序算法可 ...

  9. @无痕客 https://www.cnblogs.com/wuhenke/archive/2012/12/24/2830530.html 通篇引用

    无痕客 https://www.cnblogs.com/wuhenke/archive/2012/12/24/2830530.html 关于Async与Await的FAQ 关于Async与Await的 ...

随机推荐

  1. 1-函数返回值-return详解及应用-1

    return 返回值   可以是:数字.字符串.布尔.函数.对象(元素\[]\{}\null).未定义  <script> function fn1(){return 100;} aler ...

  2. 在Dynamics CRM中自定义一个通用的查看编辑注释页面

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复162或者20151016可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 注释在CRM中的显示是比较特别, ...

  3. 滴滴出行开源项目doraemonkit食用指南

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/94 doraemonkit 功能介绍 一两周前在地铁上刷任 ...

  4. 比hive快10倍的大数据查询利器presto部署

    目前最流行的大数据查询引擎非hive莫属,它是基于MR的类SQL查询工具,会把输入的查询SQL解释为MapReduce,能极大的降低使用大数据查询的门槛, 让一般的业务人员也可以直接对大数据进行查询. ...

  5. Houdini设置

    关闭网络编辑器动画 Animate network changes 平移时保持视口枢轴 Maintain Viewport Pivot when Panning 通知帮助提示将出现在Houdini的状 ...

  6. Verilog语言框架

    一.常用关键字

  7. G1 垃圾收集器架构和如何做到可预测的停顿(阿里)

    CMS垃圾回收机制 参考:图解 CMS 垃圾回收机制原理,-阿里面试题 CMS与G1的区别 参考:CMS收集器和G1收集器优缺点 写这篇文章是基于阿里面试官的一个问题:众所周期,G1跟其他的垃圾回收算 ...

  8. Html学习之十六(表格与表单学习--课程表制作)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Html学习之十五(盒模型)

    Web页面中的每一个元素都是一个盒模型,CSS中使用盒模型来描述一个元素.CSS盒子模型又称框模型,它包含四个边界,分别是外边距边界(Margin).边框边界(border).内边距边界(paddin ...

  10. luoguP4248 [AHOI2013]差异

    题意 考虑式子前面那段其实是\((n-1)*\frac{n*(n+1)}{2}\),因为每个后缀出现了\(n-1\)次,后缀总长为\(\frac{n*(n+1)}{2}\). 现在考虑后面怎么求: \ ...