2024年最全三、SpringBoot 整合mybatis 多数据源以及分库分表,HTTPS面试常问全解析

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

jdbc-url: jdbc:mysql://192.168.252.53:3306/zlflovemm?characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=CONVERT_TO_NULL

username: root

password: 123456

max-idle: 10

max-wait: 10000

min-idle: 5

initial-size: 5

two:

driver-class-name: com.mysql.jdbc.Driver

jdbc-url: jdbc:mysql://192.168.252.53:3306/zlfdb?characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=CONVERT_TO_NULL

username: root

password: 123456

max-idle: 10

max-wait: 10000

min-idle: 5

initial-size: 5

这里需要注意的是如果使用的是springboot 2.0 以上的,那么注意是 driver-class-name 和

jdbc-url 而不是driverClassName和url.这里是一个坑,提醒大家一下。

配置数据源


接下来就需要我们手动的加载什么什么数据源了,我们在config中创建 DataSourcesConfig 类

@Configuration

public class DataSourcesConfig {

@Bean(name=“dbOne”)

@ConfigurationProperties(prefix = “spring.datasource.one”)

@Primary

DataSource dbOne(){

return DataSourceBuilder.create().build();

}

@Bean(name=“dbTwo”)

@ConfigurationProperties(prefix = “spring.datasource.two”)

DataSource dbTwo(){

return DataSourceBuilder.create().build();

}

}

这里定义了两个数据源的DataSource。分别是我们在配置文件中配置的one 和two 。注解@Primary 表示默认使用的数据源。

MyBatisConfigOne 类

@Configuration

@MapperScan(basePackages = “com.quellan.zlflovemm.dao.mapper1”,sqlSessionFactoryRef = “sqlSessionFactory1”,sqlSessionTemplateRef = “sqlSessionTemplate1”)

public class MyBatisConfigOne {

@Resource(name = “dbOne”)

DataSource dbOne;

@Bean

@Primary

SqlSessionFactory sqlSessionFactory1()throws Exception {

SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dbOne);

return bean.getObject();

}

@Bean

@Primary

SqlSessionTemplate sqlSessionTemplate1() throws Exception{

return new SqlSessionTemplate(sqlSessionFactory1());

}

}

MyBatisConfigTwo 类

@Configuration

@MapperScan(basePackages = “com.quellan.zlflovemm.dao.mapper2”,sqlSessionFactoryRef = “sqlSessionFactory2”,sqlSessionTemplateRef = “sqlSessionTemplate2”)

public class MyBatisConfigTwo {

@Resource(name = “dbTwo”)

DataSource dbTwo;

@Bean

SqlSessionFactory sqlSessionFactory2()throws Exception {

SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dbTwo);

return bean.getObject();

}

@Bean

SqlSessionTemplate sqlSessionTemplate2()throws Exception {

return new SqlSessionTemplate(sqlSessionFactory2());

}

}

注意连个文件的区别:

file

dao 层


在dao 层创建了两个包mapper1 和mapper2 .包里面的UserMapper类的内容是完全一样,放在不同的包中只是区分使用哪个数据源。和昨天是一样的。

public interface UserMapper {

@Select(“select id,username as userName,password,email,role_code as roleCode,gmt_create as gmtCreate,gmt_update as gmtUpdate,nickname as nickName,user_create as userCreate from sys_user”)

List findUserList();

@Insert({“insert into sys_user(username,password,email) values(‘ u s e r . u s e r N a m e ′ , ′ {user.userName}',' user.userName,{user.password}’,‘${user.email}’)”})

int add(@Param(“user”) UserEntry user);

@Delete(“delete from sys_user where id = #{id}”)

int delete(int id);

}

service 层


UserService接口

public interface UserService {

List findUserList();

int addUser(String userName,String password,String email);

int deleteUser(int id);

List findUserList2();

int addUser2(String userName,String password,String email);

int deleteUser2(int id);

}

UserServiceImpl类:

@Service

public class UserServiceImpl implements UserService {

@Autowired

protected UserMapper userMapper;

@Autowired

protected UserMapper2 userMapper2;

@Override

public List findUserList() {

return userMapper.findUserList();

}

@Override

public int addUser(String userName, String password, String email) {

UserEntry user=new UserEntry();

user.setUserName(userName);

user.setPassword(password);

user.setEmail(email);

return userMapper.add(user);

}

@Override

public int deleteUser(int id) {

return userMapper.delete(id);

}

@Override

public List findUserList2() {

return userMapper2.findUserList();

}

@Override

public int addUser2(String userName, String password, String email) {

UserEntry user=new UserEntry();

user.setUserName(userName);

user.setPassword(password);

user.setEmail(email);

return userMapper2.add(user);

}

@Override

public int deleteUser2(int id) {

return userMapper2.delete(id);

}

}

controller 层


userController

@Slf4j

@RestController

@RequestMapping(“/user”)

public class UserController {

@Autowired

private UserService userService;

@RequestMapping(value = “/list”,method = RequestMethod.GET)

public List findUserList(){

return userService.findUserList();

}

@RequestMapping(value = “/add”,method = RequestMethod.GET)

public String addUser(@RequestParam(value = “userName”)String uaserName,@RequestParam(value = “password”)String password,@RequestParam(value = “email”)String email){

int falg=userService.addUser(uaserName,password,email);

if(falg>0){

return “success”;

}

return “error”;

}

@RequestMapping(value = “/delete”,method = RequestMethod.GET)

public String deleteUser(@RequestParam(value = “id”)int id){

if(userService.deleteUser(id)>0){

return “success”;

}

return “error”;

}

@RequestMapping(value = “/list2”,method = RequestMethod.GET)

public List findUserList2(){

return userService.findUserList2();

}

@RequestMapping(value = “/add2”,method = RequestMethod.GET)

public String addUser2(@RequestParam(value = “userName”)String uaserName,@RequestParam(value = “password”)String password,@RequestParam(value = “email”)String email){

int falg= userService.addUser2(uaserName,password,email);

if(falg>0){

return “success”;

}

return “error”;

}

@RequestMapping(value = “/delete2”,method = RequestMethod.GET)

public String deleteUser2(@RequestParam(value = “id”)int id){

if(userService.deleteUser2(id)>0){

return “success”;

}

return “error”;

}

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

秋招|美团java一面二面HR面面经,分享攒攒人品

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

g(value = “/delete2”,method = RequestMethod.GET)

public String deleteUser2(@RequestParam(value = “id”)int id){

if(userService.deleteUser2(id)>0){

return “success”;

}

return “error”;

}

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

[外链图片转存中…(img-dbMSfzBT-1715100241933)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值