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

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

  1. <!-- 引入jap -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-jpa</artifactId>
  5. </dependency>
  6. <!-- 引入mysql -->
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. </dependency>

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

  1. spring.datasource.url=jdbc:mysql://localhost:3306/cfj_test?useUnicode=true&characterEncoding=utf-8
  2. spring.datasource.username=root
  3. spring.datasource.password=root
  4. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  5. spring.jpa.properties.hibernate.hbm2ddl.auto=update
  6. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
  7. 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 添加实体类

  1. package com.cfj.testboot.domain;
  2.  
  3. import java.io.Serializable;
  4.  
  5. import javax.persistence.Entity;
  6. import javax.persistence.GeneratedValue;
  7. import javax.persistence.Id;
  8.  
  9. @Entity
  10. public class UserDo implements Serializable{
  11.  
  12. private static final long serialVersionUID = 1L;
  13.  
  14. @Id
  15. @GeneratedValue
  16. private Integer id;
  17. private String userName;
  18. private String passWord;
  19.  
  20. public UserDo() {
  21.  
  22. }
  23.  
  24. public UserDo(String userName,String passWord) {
  25. this.userName = userName;
  26. this.passWord = passWord;
  27.  
  28. }
  29.  
  30. public Integer getId() {
  31. return id;
  32. }
  33. public void setId(Integer id) {
  34. this.id = id;
  35. }
  36.  
  37. public String getUserName() {
  38. return userName;
  39. }
  40. public void setUserName(String userName) {
  41. this.userName = userName;
  42. }
  43. public String getPassWord() {
  44. return passWord;
  45. }
  46. public void setPassWord(String passWord) {
  47. this.passWord = passWord;
  48. }
  49.  
  50. @Override
  51. public String toString() {
  52. return "UserDo [id=" + id + ", userName=" + userName + ", passWord=" + passWord + "]";
  53. }
  54.  
  55. }

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

几乎不用写实现类

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

  1. package com.cfj.testboot.domain;
  2.  
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4.  
  5. public interface UserRepository extends JpaRepository<UserDo, Integer>{
  6.  
  7. UserDo findByUserName(String userName);//按照名字查询
  8.  
  9. }

5 测试

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

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-test</artifactId>
  4. <scope>test</scope>
  5. </dependency>
  6. <dependency>
  7. <groupId>junit</groupId>
  8. <artifactId>junit</artifactId>
  9. <version>3.8.1</version>
  10. <scope>test</scope>
  11. </dependency>

测试类如下:

  1. package com.cfj.testboot.domain;
  2.  
  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.SpringJUnit4ClassRunner;
  8.  
  9. @RunWith(SpringJUnit4ClassRunner.class)
  10. @SpringBootTest
  11. public class UserRepositoryTests {
  12.  
  13. @Autowired
  14. private UserRepository userRepository;
  15.  
  16. @Test
  17. public void test() throws Exception {
  18.  
  19. userRepository.save(new UserDo("aa1", "11"));
  20. userRepository.save(new UserDo("bb2", "22"));
  21.  
  22. }
  23.  
  24. @Test
  25. public void testFind() throws Exception {
  26.  
  27. UserDo u = userRepository.findByUserName("aa1");
  28. System.out.println(u.getUserName());
  29.  
  30. }
  31.  
  32. }
  参考: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. Junit4模板

    模板 MallApplicationTests import org.junit.runner.RunWith; import org.springframework.boot.test.contex ...

  2. hive的metatable学习

    一.存储Hive版本的元数据表(VERSION)   二.Hive数据库相关的元数据表(DBS.DATABASE_PARAMS) DBS --存储Hive中所有数据库的基本信息   DATAB ...

  3. 移动端底部导航固定配合vue-router实现组件切换

    在我们平时练习或者实际项目中也好,我们常常遇到这么一个需求:移动端中的导航并不是在顶部也不是在底部,而是在最底部且是固定的,当我们点击该导航项时会切换到对应的组件.相信对于很多朋友而言,这是一个很简单 ...

  4. TypeScript 学习笔记(二)

    块级作用域变量: 1.不能在被声明前读或写 console.log(num); let num: number = 0; // 报错 2.仍然可以在一个拥有块级作用域的变量声明前通过函数捕获它,但不能 ...

  5. Odoo12 之主题创建或扩展

    初次使用 Odoo 来制作网站,因Odoo自带代码块效果单一,无法满足当前网站展示效果,需要对当前代码块进行添加或扩展.而这个代码块是属于网站中的布局设计这一块,Odoo 将所有的布局以及逻辑行为,都 ...

  6. Tomcat下载教程

    首先确定你Windows系统是64位,还是32位(现在大部分是64位) 查看操作系统位数步骤:(WindowsXP,Windows7,Windows8,Windows10查看步骤大同小异,举例Wind ...

  7. 具名插槽 slot (二)

    slot 是父组件与子组件的通信方式可以将父组件的内容显示在子组件当中或者说可以将 让你封装的组件变的更加的灵活,强壮! 在子组件中  通过为多个slot进行命名.来接受父组件中的不同内容的数据  这 ...

  8. Jmeter-Question之“HTTPS请求”

    前面在Jmeter-Question中有提到若干问题,有时间呢,我也会进行继续编写随笔,梳理自己的知识,本篇呢,便来记Jmeter发送https请求的过程 内容大致与http://blog.csdn. ...

  9. SecureCRT自动断开连接的解决方法

    方法一: 在普通用户下,输入重启sshd服务的命令:service sshd restart 这时会提示:管理系统服务或单元需要身份验证.解决的方法:先要切换为root用户,接着重启sshd服务:se ...

  10. linux常用终端命令

    01. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也 ...