springboot整合springDataJPA(替代了MyBatis)

Posted zhy819

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot整合springDataJPA(替代了MyBatis)相关的知识,希望对你有一定的参考价值。

SpringDataJPA不需要表直接使用注解,是对JPA的封装。

需求:查询数据库---->查到数据---->展示到页面上

分析:

  1.创建数据表:user表(此处建表,只是为了依赖导入失败,注解无法使用时备用)

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
	`id` int(11) NOT NULL AUTO_INCREMENT,
	`username` varchar(50) DEFAULT NULL,
	`password` varchar(50) DEFAULT NULL,
	`name` varchar(50) DEFAULT NULL,
	PRIMARY KEY (`id`)
	) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

  插入数据:

INSERT INTO `user` VALUES (‘1‘, ‘zhangsan‘, ‘123‘, ‘张wujiji);
INSERT INTO `user` VALUES (‘2‘, ‘lisi‘, ‘123‘, ‘李四‘);

  2.使用持久层框架SpringDataJPA

    1.导入依赖

<!-- springBoot JPA的起步依赖 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--数据库的依赖-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

    2.创建实体类

@Entity                  //声明此类是实体类
@Table(name = "user")    //声明表名为user
@Data                    //此注解作用相当于添加了setter、getter、toString方法
public class User {
	//主键自增长策略
	@Id              //指定的类的属性,用于识别(一个表中的主键)
        //指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得的值
	@GeneratedValue(strategy = GenerationType.IDENTITY) 
	private int id;

	private String username;
	private String password;
	private String name;
}        

    3.创建Controller类

@RestController         //相当于@Controller和@RequestMapping两个注解的作用
public class UserController {

	@Autowired
	private UserDao userDao;

	@RequestMapping("/user/list")
	public List<User> getUserList(){
		return userDao.findAll();    //方法可以直接调用,不需要自己手写
	}
}

    4.创建dao层:

//采用SpringDataJPA的方式必须继承JpaRepository,两个泛型,一个是实体类的类型,另一个是主键的类型
public interface UserDao extends JpaRepository<User,Integer> {
}

  3.将查询到的数据显示到页面上

  将数据显示到页面上的方式有:

    1.静态:html、vue.js框架、angular.js框架(此框架出bug时不会报出在第几行,需要一行一行的找),后两个都是重型框架,加载速度慢,只适用于写办公软件、后台等被公司内部员工所用,不适用于客户

    2.动态:每次请求都生成一次页面jsp、json、freemarker模板、tymeleaf模板(比较麻烦)、velocity框架(已过时)。

    jsp本质上就是servlet,运行时需要容器,即工程,切必须是web工程,项目中若使用了springboot框架,则项目中不推荐使用jsp

  此处我们使用模板技术freemarker:

  freemarker使用步骤:

      1.添加依赖
<!--freemarker模板依赖-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
      2.创建模板文件,保存位置在resources/templates目录下,文件后缀名为.ftl技术图片
<html>
<head>
<title>spring boot</title>
</head>
<body>
<table border="1px">
<thead>
<tr>
<th>id</th>
<th>用户名</th>
<th>密码</th>
<th>姓名</th>
</tr>
</thead>
<tbody>
<#--循环 将后台返回回来的userList数据循环 user代表userList中的单个对象-->
<#--循环次数有userList中的数据决定,有多少条就循环多少次-->
<#list userList as user>
<tr>
<th>${user.id}</th>
<th>${user.username}</th>
<th>${user.password}</th>
<th>${user.name}</th>
</tr>
</#list>
</tbody>
</table>
</body>
</html>
      3.编写Controller类,把结果传递给模板
@Controller
public class PageController {
    @Autowired
    private UserDao userDao;

    @Value("${page.rows}")
    private Integer rows;
    @RequestMapping("/page/user/list")
    public String getUserList(Model model){
        List<User> userList = userDao.findAll();
        model.addAttribute("userList",userList);
        return "user";//返回ftl的名字,跳转到页面
    }
}

以上是关于springboot整合springDataJPA(替代了MyBatis)的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合Spring Data JPA多数据源

SpringBoot整合持久层技术--Spring Data JPA

SpringBoot数据访问 SpringBoot整合JPA

Spring Boot整合Spring Data JPA

SpringBoot中使用SpringDataJPA

七springboot整合Spring-data-jpa