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

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

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

相关文章
|
10月前
|
前端开发
前端学习笔记202305学习笔记第二十五天-读写流组合使用
前端学习笔记202305学习笔记第二十五天-读写流组合使用
23 0
|
安全 Java 关系型数据库
区分多数据源实现(一)|学习笔记
快速学习区分多数据源实现(一)
102 0
|
存储 SQL NoSQL
事务功能使用及原理介绍(二)|学习笔记
快速学习事务功能使用及原理介绍
175 0
事务功能使用及原理介绍(二)|学习笔记
|
SQL 存储 NoSQL
事务功能使用及原理介绍(一)|学习笔记
快速学习事务功能使用及原理介绍
270 0
事务功能使用及原理介绍(一)|学习笔记
|
Java 数据库 开发者
区分多数据源分析|学习笔记
快速学习区分多数据源分析
107 0
|
SQL 监控 关系型数据库
ShardingSphere -读写分离(概念)| 学习笔记
快速学习ShardingSphere -读写分离(概念)。
174 0
ShardingSphere -读写分离(概念)|  学习笔记
|
存储 缓存 监控
ChangeStreams 使用及原理(二)|学习笔记
快速学习 ChangeStreams 使用及原理
576 0
ChangeStreams 使用及原理(二)|学习笔记
|
SQL 运维 监控
ChangeStreams 使用及原理(一)|学习笔记
快速学习 ChangeStreams 使用及原理
370 0
ChangeStreams 使用及原理(一)|学习笔记
|
存储 人工智能 算法
数字音频基础(下)| 学习笔记
快速学习数字音频基础(下),介绍了数字音频基础(下)系统机制, 以及在实际应用过程中如何使用。
338 0
数字音频基础(下)| 学习笔记
|
编解码 开发者
数字音频基础(上)| 学习笔记
快速学习数字音频基础(上),介绍了数字音频基础(上)系统机制, 以及在实际应用过程中如何使用。
243 0
数字音频基础(上)| 学习笔记

热门文章

最新文章