通用Mapper怎么开接口扫描

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实!

阶段1、深入多线程

阶段2、深入多线程设计模式

阶段3、深入juc源码解析

阶段4、深入jdk其余源码解析

阶段5、深入jvm源码解析

  • 通用Mapper怎么开启接口扫描?
/**
 * 注意,这里的@MapperScan是tk包下的,而不是org
 * @author qiyu
 */
@MapperScan("com.bravo.happy.dao")
@SpringBootApplication
public class HappyDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(HappyDemoApplication.class, args);
    }

}

注意,这只是开启了接口扫描,和mapper.xml无关,要想扫描XML要另外配置。

  • 引入了通用Mapper还能写XML吗?如果能,怎么做?
  • SpringBoot环境下,MyBatis怎么开启SQL日志打印?
  • 通用Mapper的接口方法是支持自动驼峰映射的,但我们手写的SQL如何开启驼峰映射?
# 打印SQL
logging:
  level:
    com.bravo.happy.dao: debug

mybatis:
  # XML扫描路径
  mapper-locations: classpath:mapper/**/*.xml
  # 通用Mapper的方法会自动转换驼峰,但手写的SQL需要开启才能转换
  configuration:
    map-underscore-to-camel-case: on

  • 通用Mapper能控制要查询的列吗?
/**
 * SELECT id , name FROM tk_user WHERE ( ( age = ? ) )
 *
 * 虽然通用Mapper也能只查询指定列,但是复用性不好,每次都要在service层重新写一遍
 */
@Test
public void testSelectByExample() {
    Example example = new Example(TkUserPojo.class);
    // 指定查询列只查询id和name,指定条件列为age
    example.selectProperties("id", "name").createCriteria().andEqualTo("age", 16);
    userMapper.selectByExample(example);
}

通用Mapper可以指定查询的列,但只能通过Example对象,但其他诸如selectByPrimaryKey()方法是全列查询,因为mapper对象无法直接设置selectProperties()。

  • 通用Mapper默认的是逻辑删除还是物理删除?怎么配置逻辑删除?

默认是物理删除,可以给业务含义为“删除”的字段加@LogicDelete注解实现逻辑删除。但是很遗憾,@LogicDelete对TkBaseMapper中的deleteByIdList()不起作用,它还是物理删除:

  • 你喜欢用xxx还是xxxSelective()?比如insert()和insertSelective()选哪个?为什么?

建议使用带Selective的方法,因为它不是全量操作,可以避免修改其他无关字段,不影响数据库默认值。

  • 通用Mapper支持批量操作吗?

默认提供了几个接口,可以实现批量查询(IN)、批量插入(全字段,如果不设置值则插入null)、批量物理删除,没提供批量更新。建议实际开发时手写批量操作的SQL,注意避免全表操作!

  • 使用Example需要注意什么问题?

注意对 条件全空 or 集合size为0 的判断。

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中使用Mapper需要进行以下步骤: 1. 在启动类上添加`@MapperScan`注解来扫描Mapper包,并将继承的Mapper接口添加到MyBatis配置中。如下所示: ```java @SpringBootApplication @MapperScan("com.cloudsw.mapper") public class MapperApplication { public static void main(String[] args) { SpringApplication.run(MapperApplication.class, args); } } ``` 这样就可以将Mapper接口添加到MyBatis的配置中。 2. 配置数据库和MyBatis。在`application.yml`配置文件中添加数据库和MyBatis的配置。示例如下: ```yaml spring: datasource: name: clodsw-portal-dev url: jdbc:mysql://localhost:3306/cloudsw_portal?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&autoReconnect=true&allowPublicKeyRetrieval=true username: 123456 password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.cloudsw.dto mapper: mappers: com.cloudsw.base.IBaseMapper identity: MYSQL ``` 在上述配置中,配置了数据库连接信息和MyBatis的一些配置项。 3. 使用通用Mapper通用Mapper是一个简化数据访问操作的工具,可以减少大量的重复代码。具体使用方法可以参考官方文档。 总结起来,在Spring Boot中使用Mapper需要在启动类上添加`@MapperScan`注解,配置数据库和MyBatis的相关信息,以及按需使用通用Mapper来简化数据访问操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [一看就会一学就废之SpringBoot整合通用Mapper以及常用方法](https://blog.csdn.net/qq_45675378/article/details/115324620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值