Mybatis中@Mapper与@MapperScan配置及注入原理解析
MybatisAutoConfiguration还有一个静态内部类,@Import了AutoConfiguredMapperScannerRegistrar类,但是有@ConditionalOnMissingBean,即spring容器中不存在MapperFactoryBean,MapperScannerConfigurer的实例。
在SqlMapConfig.xml文件中 mappers的配置有以下几种 注意:以下两种方法配置的是mapper接口路径。要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
解析mybatis-config.xml里的配置为Configuration对象,Mybatis的全局配置对象。
@MapperScan注解需要在pom.xml导入什么
1、在SpringBoot中集成MyBatis,可以在mapper接口上添加@Mapper注解,将mapper注入到Spring,但是如果每一给mapper都添加@mapper注解会很麻烦,这时可以使用@MapperScan注解来扫描包。
2、在IntelliJ IDEA中导入pom.xml文件的步骤如下: 打开IntelliJ IDEA,点击“File”菜单,选择“Open”或“Open Project”。 在弹出的对话框中,选择包含pom.xml文件的项目文件夹。
3、如果需要在项目中添加依赖项,可以直接在pom.xml文件中添加相应的依赖项。 保存pom.xml文件后,IntelliJ IDEA会自动下载并安装所需的依赖项。注意:在导入pom.xml文件之前,需要先安装和配置Maven。
SpringBoot项目主启动类上常用的注解释意
1、springboot常用注解有@SpringBootApplication;@Repository;@Service;@RestController;@ResponseBody。
2、:##@SpringBootApplication 标识该类为SpringBoot项目启动类。
3、在springboot中大量使用了该注解,该注解提供了一种使用Java类方式配置bean。 可以发现 @Configuration使用了@Component 注解修饰。 实例: 配置Mybatis会话工厂 @Import 功能和 类似,修饰Java类,用于向当前类导入其他配置类。
4、@SpingBootApplication:SpringBoot的核心注解,主要目的是开启自动配置。它也是一个组合注解,主要组合了@Configurer,@EnableAutoConfiguration(核心)和@ComponentScan。
mapper层是干什么的?
java web中mapper是对象持久化映射层,一般会继承ibatis或者mybatis servive是一些业务逻辑的处理层,controller是控制层,相当于mvc的c层,model是数据模型层相当于mvc的m层。
model层就是实体类,对应数据库的表。controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action。Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接。
action从service接口得到数据负责处理业务与过滤业务,把数据给网页。service是定义接口,serviceimpl是定义接口的实现,是功能代码编写地方,它从daoimpl接口中得到数据,而dao是对数据库进行操作的代码。
Service层 因为导入了通用mapper所有可以用。查询的可以替换为List userList =userMapper.select(user);mapper层不调用其他类中的方法也可以。
springboot中,mybatis的mapper接口是如何生成代理对象的?
1、MybatisAutoConfiguration还有一个静态内部类,@Import了AutoConfiguredMapperScannerRegistrar类,但是有@ConditionalOnMissingBean,即spring容器中不存在MapperFactoryBean,MapperScannerConfigurer的实例。
2、那是因为MyBatis使用Java动态代理实现的接口。这里仅仅举个简单例子来说明原理,不是完全针对MyBatis的,这种思想我们也可以应用在其他地方。
3、我们在使用 Mybaits 进行 ,通常只需要定义几个 Mapper 接口,然后在编写一个 xml 文件,我们在配置文件中写好 sql , Mybatis 帮我们完成 Mapper 接口道具体实现的调用。以及将结果映射到 model bean 中。
4、解析mybatis-config.xml里的配置为Configuration对象,Mybatis的全局配置对象。
5、MyBatis 的动态代理不需要实现类的原因:我们只需要根据接口类型+方法的名称, 就可以找到 Statement ID 了,而唯一要做的一件事情也是这件,所以 不需要实现类 。