区分多数据源实现(二)|学习笔记

简介: 快速学习区分多数据源实现(二)

开发者学堂课程【SpringBoot 实战教程 区分多数据源实现(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10802


区分多数据源实现(二)


6、针对第一个数据源写 mapper 和 service针对第二个数据也写 mapper 和 service这时需要通过包名进行区分因为注解比较麻烦建议使用包名首先创建 mapper对应的包要和 com. qi anfeng . db5 . mapper  一致,DataSource1.java 对应的包名是 com.qianfeng . db1 mapper所以创建包命名为 com.qianfeng . db1 mapper

7、创建另外一个包命名为 com.qianfeng . db5 mapper通过包名进行区分

8、Db1 里面是用户表还需要 pojo

9、因为是两个数据库中的两张表一个是 users 表一个是 user 表把逆向工程生成的代码拷贝到 db5 数据库下的 user 表中还有 users 表对应的实体类先对 db1的 users 表写功能用注解的方式需要写一个接口命名为 UsersMapper

10、给用户指定姓名和密码用注解 insert直接写 sql 语句向 users 表里面添加用户

@Insert ("insert into users (name, password) values(# {name} , #{password}")

void addUser (@ Param ("name") Stringname, @ Param ( "password" )String password) ;

}

11、实现 service创建一个包注意要通过包名进行区分所以命名为 com.qianfeng.db1.service

12、创建一个接口命名为 UsersService

添加用户的功能

package com. qianfeng.db1. service;

import com. qianfeng.pojo.Users ;

public interface UsersService {

VoidsaveUser (Users user) ;

}

13、创建 service 实现类创建 class命名为 UsersServicelmpl接口选择 UsersService

14、针对 db1数据库的 users 表输入添加的功能

package com. qianfeng .db1. service;

import org. springframework. stereotype . Service;

import com. qianfeng . db1. mapper . UserMapper ;

import com. qianfeng.pojo.Users;

@Service

public class UserServiceImpl implements UserService {

@Autowired

private UserMapper usersMapper ;

@Override

public void saveUser (Users user) {

userMapper.addUser(user.getName(),user .getbirthday() ) ;

}

}

15、针对 db5 的 user 表创建 mapper命名为 UserMapper

输入添加用户的功能查看表有哪些字段指定 username 和 birthday 的值

package com. qi anfeng . db5. mapper;

import java.util . Date;

import org. apache. ibatis . annotations . Insert;

import org . apache . ibatis . annotations . Param;

public interface UserMapper {

@Insert ("insert into user (username, birthday) values (# {username },#{birthday}

void addUser (@Param ("username") String username, @Param("birthday")date ("birthday");

}

16、需要注意 Usermapper 要用的 db1 数据源。UsersMapper 用的是 db5 数据源如何指明用的是哪一个数据源呢加注解 Qualifier 指明数据源即可

@Qualifier ("db1SqlSessionFactory"

@Qualifier ("db5SqlSessionFactory"

17、写db5的service创建一个包命名为 com.qianfeng.db5.service

写一个接口命名为 UserService

在 UserService.java 中输入

Packagecom. qianfeng.db5. service;

import com. qianfeng .pojo.User;

public interface UserService {

VoidsaveUser (User user) ;

}

创建一个实现类命名为 UserServicelmpl选择 UserService

加注解 serviceservice 里面注入 mapper代码如下

Package com. qianfeng.db5. service;

import org . springframework .beans . factory . annotation . Autowi red;

import org. springframework. stereotype . Service;

import com. qianfeng.db1. service .UsersService;

import com. qianfeng. db5. mapper . UserMapper;

import com. qianfeng .pojo.Users;

@Service

public class UserServiceImpl implements UsersService{

@Autowired

private UserMapper userMapper;

@Override

public void ,saveUser (Users user) {

userMapper . addUser (user . getName (), user . getBirthday ());调用 usermapper 里面的 adduser 方法

18、通过包名方式区分不同的 mapper 和不同 service创建 controller命名为 IndexController

写添加用户的功能

package com. qianfeng . controller;

import org. springframework. stereotype . Controller;

import org. springframework. web.bind. annotation. RequestMapping;

@Controller

public class IndexController {

@Autowired

private UsersService usersService ; 操作 db1 向用户表中添加用户

@Autowired

private UserService userService ;

@RequestMapping("/ addUser")

@ResponseBody

public String addUser ( )

{

Usersu=neWUsers () ;

u. setName ("lisi") ;

u. setPassword ("000000") ;

usersService . saveUser (u )

return"ok"; 最后希望得到字符串

}

}

19、扫描 Service 和 controller有 db1 的 Service 和 db5 的 Service在启动类中指定基础包它们都有前缀@SpringBootAppl ication ( scanBasePackages="com. qianfeng")Service 和 controller 都会扫描到mapper 已经在 DataSource1.java 中 mapperscan 进行了扫描所以就不需要在启动类中去扫描 mapper

20、启动控制台提示发现两个数据源就是它现在不能区分现在有两个数据源它在启动时不知道默认使用哪一个数据源所以要指定一个默认的数据源比如把 db1作为默认数据源在每一个方法上加 @Primary再重新启动就没有发现问题所以注意要指定默认的数据源

@Primary/ /指定默认的数据源      

21、访问   controller看是否能够正常向 db1的 users 表中添加用户输入localhost:8080/addUser成功

image.png

在 db1表中刷新可以看到密码都是0的数据证明成功这就是通过不同的包名区分数据源

image.png

相关文章
升级mybatis-plus到3.5.3.1和JSQLParser 从4.3升级到4.6版本引起的插入问题解决
升级mybatis-plus到3.5.3.1和JSQLParser 从4.3升级到4.6版本引起的插入问题解决
1686 0
|
XML 缓存 前端开发
Thymeleaf一篇就够了
Thymeleaf是Springboot官方支持的模板引擎,有着动静分离等独有特点,通过本文简单学习下吧!
63394 24
Thymeleaf一篇就够了
|
算法 Linux 调度
Docker的资源限制实战篇
本文详细介绍了如何利用Docker对容器的资源进行限制,包括内存和CPU的使用。文章首先概述了资源限制的重要性及其在Linux系统中的实现原理,并强调了不当设置可能导致的风险。接着,通过一系列实战案例展示了如何具体设置容器的内存限制,包括硬性限制、动态调整以及软限制等。最后,文章还提供了限制容器CPU访问的具体方法和示例,如指定容器使用的CPU核心数和基于`--cpu-shares`参数对CPU资源进行分配。通过这些实践,读者可以更好地理解和掌握Docker资源管理技巧。
909 14
Docker的资源限制实战篇
|
SQL 存储 分布式计算
奇思妙想的SQL|去重Cube计算优化新思路
本文主要分享了作者在蚂蚁集团高管数据链路改造升级过程中,针对去重Cube的优化实践。
1322 48
|
存储 Java
BIO的工作流程
BIO(Blocking I/O)工作流程是指在进行输入输出操作时,线程会一直阻塞直到操作完成。具体流程包括:客户端发起请求,服务器接收后开始处理,期间服务器线程处于等待状态,直至数据准备完毕,响应返回给客户端,线程才继续执行其他任务。
293 5
|
XML Java Maven
idea配置maven步骤及常见问题
本文介绍了在IDEA中配置Maven的详细步骤,包括Maven的下载、系统环境变量的配置、Maven本地仓库的设置、镜像加速的配置,以及在IDEA中指定Maven路径和配置文件。同时,还提供了解决每次新建项目需要重新手动配置Maven问题的方法。
idea配置maven步骤及常见问题
|
XML JavaScript 数据格式
XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
XML Schema(XSD)是用于定义XML文档结构的规范,它描述了元素、属性及其顺序、数据类型和约束。与DTD相比,XML Schema支持更多数据类型,如字符串、日期等,并且是基于XML的,允许扩展和重用。学习XML Schema有助于确保数据通信时双方对内容的理解一致,通过验证防止错误。示例展示了如何定义一个`note`元素,包含`to`, `from`, `heading`和`body`子元素,都是字符串类型。XML文档可以通过引用XML Schema进行验证,确保内容符合预设模式。
1408 0
|
数据采集 机器学习/深度学习 数据可视化
使用决策树对金融贷款数据进行分析
使用决策树对金融贷款数据进行分析
262 2
|
SQL 资源调度 大数据
大数据之hadoop3入门到精通(二)
大数据之hadoop3入门到精通(二)
230 2
【Qt】Qt定时器类QTimer
【Qt】Qt定时器类QTimer
414 0