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

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

开发者学堂课程【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

相关文章
|
4月前
|
搜索推荐 C#
XAF 属性编辑器(PropertyEditor)- 原理篇
XAF Blazor 的 PropertyEditor 在 DEV 24.1.3 中经历了重大改进,更接近 WinForm。PropertyEditor 担任业务逻辑与各平台交互的角色,利用 INotifyPropertyChanged 监听属性变化。新版本弃用了 ComponentAdapter,代之以接口和基类,简化自定义编辑器的创建,降低了复杂度,同时增加了 ComponentModel 的 ComponentType 属性以自动化组件渲染和属性映射。这使得 Blazor 的 PropertyEditor 创建变得更为简便。
|
6月前
|
小程序 数据格式
【经验分享】如何实现自定义数据源的级联选择组件?
【经验分享】如何实现自定义数据源的级联选择组件?
84 6
|
6月前
|
关系型数据库 MySQL
Mysql基础第十三天,创建计算字段
Mysql基础第十三天,创建计算字段
31 0
|
自然语言处理 PyTorch 算法框架/工具
离线解耦的文本表征方法(持续更新ing...)
本文仅介绍离线、解耦的、直接对文本进行表征的方法。分成通过词嵌入池化得到句子嵌入,和直接进行句子嵌入两种做法。主要用PyTorch实现。 本文将使用一个数据集来撰写相应代码,并使用简单的线性分类器来实现multi-class文本分类,分类模型的代码(我每个都是跟前面的文本表征部分直接写在同一个脚本里的)和各表征方法的效果在第4节展示。 本文使用的分词方式是jieba默认模式。其他注意事项看具体各分节内容。
离线解耦的文本表征方法(持续更新ing...)
|
SQL 存储 NoSQL
事务功能使用及原理介绍(一)|学习笔记
快速学习事务功能使用及原理介绍
313 0
事务功能使用及原理介绍(一)|学习笔记
|
存储 SQL NoSQL
事务功能使用及原理介绍(二)|学习笔记
快速学习事务功能使用及原理介绍
197 0
事务功能使用及原理介绍(二)|学习笔记
|
编解码 开发者
数字音频基础(上)| 学习笔记
快速学习数字音频基础(上),介绍了数字音频基础(上)系统机制, 以及在实际应用过程中如何使用。
数字音频基础(上)| 学习笔记
|
存储 开发者
数字音频基础(中)| 学习笔记
快速学习数字音频基础(中),介绍了数字音频基础(中)系统机制, 以及在实际应用过程中如何使用。
数字音频基础(中)| 学习笔记
|
存储 人工智能 算法
数字音频基础(下)| 学习笔记
快速学习数字音频基础(下),介绍了数字音频基础(下)系统机制, 以及在实际应用过程中如何使用。
数字音频基础(下)| 学习笔记
|
存储 缓存 边缘计算
缓存基础(二)|学习笔记
快速学习 缓存基础(二)
123 0
缓存基础(二)|学习笔记