整体项目结构:
- TranscodeTestApplication类是统一的应用入口
- service包下都是具体的业务逻辑
- dao包下是涉及数据操作相关的内容,包括实体类、通用mapper、iService类
- controller包下面是接口封装类,主要和前端页面交互,包括参数校验
- common包下面是通用配置、枚举类、DTO定义等
MybaitsPlus的使用:
entity
这里主要是用来定义实体类的,类的字段和数据库中表的字段要保持一致,类的名称也要和表的名称保持一致。因为在mybaits的配置中 map-underscore-to-camel-case: true, 所以代码中需要用驼峰的方式命名,而数据库中都是用下划线连接的。
例如:数据库中有表“media_job”,其中有字段“job_detail”;在代码的实体类中定义为:“mediaJob”类,其中有“jobDetail”字段。
这样,通过这个实体类操作数据库时,无需说明配置,直接可以对应上数据库表和字段了
mapper
mapper这里主要是操作数据库的,通过继承BaseMapper,可以直接使用一些基础的数据操作方法。需要通过实体类指定mapper操作的数据库表是哪一张
就可以直接使用一些基础方法了,比如selectbyid 、update、insert之类的
service
dao包下的 service主要是为了封装一些自定义的数据库操作方法,这里主要是用到了QueryWrapper
的相关用法。这里的service是继承了IService类。
*注意mapper在业务层引用时用的是@Resource注解,而service在业务层用的时候是用@Autowired
注解
IPage
主要是用来做数据分页的插件
多数据源的解法
在实际操作数据库的过程中经常需要同时操作两个数据库,我们希望可以用mybaits来连接多个数据库,并在使用的过程中灵活的切换
这里引入druid来帮我们做这个事情
<!-- 引入德鲁伊连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
引入依赖后,需要在Mybaits配置中添加多个数据源,默认的是primary: transcode
在实际使用中可以用@DS注解 指定方法用的数据源,注解可以加在类上,也可以是方法上
如果想在同一个方法中切换数据源,可以这么做
//临时切换
DynamicDataSourceContextHolder.push("cloudwings");//cloudwings即数据源名称
//中间执行你的业务数据操作
…………
//再切换回去
DynamicDataSourceContextHolder.clear();
*Druid 还可以用在主从库切换的使用上