SpringBoot与其他框架集成( 集成mybatis、集成Spring Data Redis)

SpringBoot与其他框架集成( 集成mybatis、集成Spring Data Redis),第1张

SpringBoot与其他框架集成( 集成mybatis、集成Spring Data Redis)

通过spring initializr创建maven工程springboot-mysql-redis,并且勾选相关依赖(web、数据库驱动、mybatis)

springboot-mysql-redis工程,做了上面的勾选,对应的pom.xml依赖如下↓


		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
        
        
			org.springframework.boot
			spring-boot-devtools
			runtime
			true
		
        
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
			2.0.1
		
        
		
			mysql
			mysql-connector-java
			runtime
		
        
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

准备Bean对象类对应数据库信息:

(2)编写mapper接口以及映射文件

MyBatis的Dao:Dao接口、Dao接口对应的映射文件(xml)

编写UserMapper接口并添加@Mapper注解(标记该类是一个Mapper接口,可以被SpringBoot自动扫描)
#上面这个可以不做:在启动类上添加@MapperScan(basePackages = {"com.qf.dao"})Dao接口的包扫描批量 *** 作也行

在配置文件中增加Mapper.xml文件扫描的地址:特别要注意的是配置里面的不是config-location(核心配置文件),而是mapper-locations

(3)编写service接口以及实现类

(4) 编写controller

(5)配置application.properties

#连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
#mybatis别名
mybatis.type-aliases-package=com.sen.domain
#加载映射文件
mybatis.mapper-locations=classpath:mapper
    @Override
    public List findAll() {
        String key = "UserList";
        //先看缓存中是否有数据
        List users = (List) redisTemplate.boundValueOps(key).get();

        //如果有,直接取缓存数据
        if(users!=null){
            return users;
        }

        //如果没有,则查询数据
        users = userMapper.findAll();

        //再将数据存入到缓存
        redisTemplate.boundValueOps(key).set(users);
        return  users;
    }
}
集成Spring Data JPA(jpa,java持久化访问

什么是SpringData? Spring Data是一个用于简化数据访问,并支持云服务的开源框架,其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务,Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和 *** 作,除了CRUD外,还包括如分页,排序等一些常用的功能 Spring Data的官网:Redirecting…

SpringData提供了对数据库的 *** 作对象,使我们对数据库的 *** 作变得更加的简单和方便,而且在 *** 作数据库的时候,无需编写SQL语句

集成步骤

 1.创建工程
 2.引入依赖
 3.创建Pojo
 4.配置Pojo注解-[*]
 5.编写Dao,Dao需要继承JpaRepository-[*]
 6.编写Service,并调用Dao实现增删改查
 7.编写Controller,调用Service实现增删改查
 8.测试

导入依赖:

        
		
			org.springframework.boot
			spring-boot-starter-data-jpa
		

(2)编写pojo

在工程的src目录下创建com.sen.bean.User对象,会自动创建表

@Entity
@Table(name = "user")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;
    
    @Column(name = "username")
    private String username;
    //@Column:指定表的列名,如果表字段跟实体类成员变量名字相同可以不写这个注解!
    private String password;
    private String address;
    //getters/setters
}

注解说明↓

 @Entity:表明为一个实体对象
 @Table:指定映射的表
 ​
 @Id:指定为主键
 @GeneratedValue:指定主键的生成策略
     TABLE:使用一个特定的数据库表格来保存主键。 
     SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。 
     IDENTITY:主键由数据库自动生成(主要是自动增长型) 
     AUTO:主键由程序控制
     
 @Column:指定表的列名,如果表字段跟实体类成员变量名字相同可以不写这个注解!

(3)编写dao接口

在工程src目录下创建dao接口,需要继承JpaRepository对象(该对象完成对数据库的CRUD过程,并且支持分页查询、排序等功能)。

在src下创建com.sen.dao.UserDao接口,代码如下:

 package com.sen.dao;
 ​
 import com.qf.bean.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 ​
 public interface UserDao extends JpaRepository {//<要操作的实体类,和主键id的类型>
 }

(4)编写service接口以及实现类

1、编写service接口:

 package com.sen.service;
 ​
 import com.sen.bean.User;
 ​
 import java.util.List;
 ​
 public interface UserService {
     List findUsers();
 ​
     User findUserById(Integer id);
 ​
     void saveUser(User user);
 ​
     void updateUser(User user);
 ​
     void deleteUserById(Integer id);
 }

2、编写service实现类:注意查询一个用userDao.findById(id).get();↓

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Override
    public List findUsers() {
        return userDao.findAll();
    }

    //注意查询一个用userDao.findById(id).get();↑
    @Override
    public User findUserById(Integer id) {
        Optional optional = userDao.findById(id);
        return optional.get();
    }

    @Override
    public void saveUser(User user) {
        userDao.save(user);
    }

    @Override
    public void updateUser(User user) {//?没有给id只给username就是增加跟上面一样!
        //并没有update方法如果id存在,则执行更新 *** 作,没有id就是增加方法!
        userDao.save(user);
    }

    @Override
    public void deleteUserById(Integer id) {
        userDao.deleteById(id);
    }
}

(5)编写controller

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/findUsers")
    public List findUsers(){
        return userService.findUsers();
    }

    @RequestMapping("/findUserById/{id}")
    public User findUserById(@PathVariable Integer id){
        return userService.findUserById(id);
    }

    @RequestMapping("/saveUser")
    public void saveUser(User user){//?
        userService.saveUser(user);
    }

    @RequestMapping("/updateUser")
    public void updateUser(User user){//?没有给id只给username就是增加跟上面一样!
        userService.updateUser(user);
    }

    @RequestMapping("/deleteUserById/{id}")
    public void deleteUserById(@PathVariable Integer id){
        userService.deleteUserById(id);
    }
}
配置application

在application.properties中配置相关JPA内容↓

#数据源,连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.1.129:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

#jpa可选相关配置↓
spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
#hibernate.ddl-auto,建表策略:
#update:每次运行程序,没有表会新建表,表内有数据不会清空,只会更新(为了效果明显,可以先删除原来的user表)
#create:每次运行程序,没有表会新建表,表内有数据会清空

#create-drop:每次程序结束的时候会清空表
#validate:运行程序会校验数据与数据库的字段类型是否相同,不同会报错

注:

集成SpringDataJPA

Dao需要继承JpaRepository

JpaRepository中已经实现了增删改查,可以拿着直接使用

继承过来的save方法,没有id就是增加,有id才是更新!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5712675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存