栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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才是更新!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号