目录结构如下:
- com.algol.common
- config
- MybatisPlusConfig.java
- dao.mmd
- entity
- TabOminCmCcStationplat.java
- mapper
- TabOminCmCcStationplatMapper.java
- TabOminCmCcStationplatMapper.xml
-service
- impl
- TabOminCmCcStationplatServiceImpl.java
- ITabOminCmCcStationplatService.java
1、 @MapperScan
配置扫描Mapper接口,例如:
@Configuration
@MapperScan(basePackages = {
"com.algol.common.dao.mmd.mapper"
})
public class MybatisPlusConfig {
}
2、mapper-locations
配置xml扫描,例如:
mybatis-plus:
mapper-locations: classpath:com/algol/common/dao/mmd/mapper/*.xml
---
type-aliases-package: com.algol.common.dao.mmd.entity
注意:该配置项从resource目录下开始扫描,如果xml文件生成在工程resource目录下,则只需要配置为: classpath:mapper/*.xml
。
如果xml文件生成在src目录下,则还需要在pom文件中将相应src下目录映射到resource目录下:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
mapper-locations
则配置为:
mybatis-plus:
mapper-locations: classpath:com/algol/common/dao/mmd/mapper/*.xml
3、type-aliases-package
配置扫描实体类:
mybatis-plus:
type-aliases-package: com.algol.common.dao.mmd.entity
4、@Mapper
可以给mapper接口自动生成一个实现类,让spring对mapper接口的bean进行管理,并且可以省略去写复杂的xml文件。
如果sql写在xml文件中,则无需使用@Mapper
注解,因为xml文件中已经定义了命名空间映射。如果sql写在注解里,则必须使用@Mapper
注解,例如:
@DS("mmd")
@Mapper
public interface TabOminCmCcStationplatMapper extends BaseMapper<TabOminCmCcStationplat> {
@Select("select * from TAB_OMIN_CM_CC_STATIONPLAT where C_INDEXNBR = #{iiiii}")
TabOminCmCcStationplat findById(String iiiii);
}
可以默认将@Mapper
注解加上,保持一个好的习惯,反正也没什么坏处。而好处是,可以混合使用,简单的sql基于注解,复杂的sql基于xml。
5、@Param
的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中。
建议传参时加上该注解,以保证多参数传入时,可能会导致不可预料的出错,例如:
TabOminCmCcStationplat findById(@Param(value = "iiiii") String iiiii);
6、IDEA里安装 MyBatisPlus
插件,可以大大提高开发效率,该插件可以方便在xml和mapper间来回自由跳转,同时支持mapper里新加接口时,xml里可以自动生成。