MyBatis 官方中文文档 www.mybatis.org/mybatis-3/z…
Java API问题
字段查不到
text类型字段查不到
原因:MyBatis selectByExample方法不会查询类型为text的字段,需要使用selectByExampleWithBLOBs()进行查询
@Mapper和@MapperScan
@Mapper和@MapperScan
解释:自定义mapper接口后,为了让mybatis将他扫描成Bean,需要在每个接口上加@Mapper注解,或者使用@MapperScan注解指定要扫描的所有包,并且可以使用‘*’通配符
@SpringBootApplication
@MapperScan({"com.kk.mysql.*.mapper", "com.kk.tidb.mapper"})
public class MyBatisApplication {
public static void main(String[] args) {
SpringApplication.run(MyBatisApplication.class, args);
}
}
@MapperScan扫描不同包中的同名Mapper会报冲突
解释:假设有两个数据源(即两个库),则启动文件会把两个库的mapper都扫描上,但如果两个包中都有OrderMapper,就会导致无法启动,比较不优化的是,@MapperScan没有一个排除列表,只能是改表名(两个数据源的mapper包中不能有重名的mapper)
sqlSession
sqlSession创建过程
- 定义一个Configuration对象,其中包含数据源、事务、mapper文件资源以及影响数据库行为属性设置settings(可以通过mybatis-config配置,spring-boot项目也可以通过设置application配置文件)
- 通过配置对象,则可以创建一个SqlSessionFactoryBuilder对象或者SqlSessionFactoryBean
- 通过SqlSessionFactoryBuilder或者SqlSessionFactoryBean获得SqlSessionFactory的实例
- SqlSessionFactory的实例可以获得操作数据的SqlSession实例,通过这个实例对数据库进行操作