• Spring Boot MyBatis 通用Mapper插件集成



    Mybatis在使用过程中需要三个东西,每张表对应一个XXMapper.java接口文件,每张表对应一个XXMapper.xml文件,每张表对应一个Entity的Java文件。   其中XXMapper.xml把XXMapper.java接口文件、Entity的Java文件 结合起来
    在配置过程中:

    MyBatisConfig.java
        @Bean(name = "sqlSessionFactory")
        public SqlSessionFactory sqlSessionFactoryBean() {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            bean.setTypeAliasesPackage("tk.mybatis.springboot.model");//每一张表对应的实体类
    
            //添加XML目录
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            try {
                bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));//每张表对应的xml文件
                return bean.getObject();
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    import org.springframework.boot.autoconfigure.AutoConfigureAfter;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import tk.mybatis.spring.mapper.MapperScannerConfigurer;
    
    import java.util.Properties;
    
    /**
     * MyBatis扫描接口,使用的tk.mybatis.spring.mapper.MapperScannerConfigurer,如果你不使用通用Mapper,可以改为org.xxx...
     *
     * @author liuzh
     * @since 2015-12-19 14:46
     */
    @Configuration
    //TODO 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
    @AutoConfigureAfter(MyBatisConfig.class)
    public class MyBatisMapperScannerConfig {
    
        @Bean
        public MapperScannerConfigurer mapperScannerConfigurer() {
            MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
            mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
            mapperScannerConfigurer.setBasePackage("tk.mybatis.springboot.mapper");//每张表对应的XXMapper.java interface类型的Java文件
            Properties properties = new Properties();
            properties.setProperty("mappers", "tk.mybatis.springboot.util.MyMapper");
            properties.setProperty("notEmpty", "false");
            properties.setProperty("IDENTITY", "MYSQL");
            mapperScannerConfigurer.setProperties(properties);
            return mapperScannerConfigurer;
        }
    
    }


    sqlSessionFactoryBeanName
    属性

    这个属性一般都用不到,只有当你配置多数据源的时候,这是会有多个sqlSessionFactory,你就需要通过该属性来指定哪一个sqlSessionFactory(值为SqlSessionFactoryBean <bean>配置中的id属性)。


    由于通用Mapper依赖JPA,所以还需要下载persistence-api-1.0.jar:

    http://repo1.maven.org/maven2/javax/persistence/persistence-api/1.0/

    http://git.oschina.net/free/Mapper/blob/master/wiki/mapper3/2.Integration.md


    MyBatis通用Mapper3 通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。 极其方便的使用MyBatis单表的增删改查。
    支持单表操作,不支持通用的多表联合查询。 通用 Mapper 支持 Mybatis-3.2.4 及以上版本 特别强调 不是表中字段的属性必须加 @Transient 注解
    通用 Mapper 不支持 devtools 热加载,devtools 排除实体类包即可,
    配置方式参考:using-boot-devtools-customizing-classload(http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-customizing-classload)
    看本文之前,请确保你已经在SpringBoot中集成MyBatis,并能正常使用。

    Spring DevTools 配置
    感谢emf1002提供的解决方案。

    在使用 DevTools 时,通用Mapper经常会出现 class x.x.A cannot be cast to x.x.A。

    同一个类如果使用了不同的类加载器,就会产生这样的错误,所以解决方案就是让通用Mapper和实体类使用相同的类加载器即可。

    DevTools 默认会对 IDE 中引入的所有项目使用 restart 类加载器,对于引入的 jar 包使用 base 类加载器,因此只要保证通用Mapper的jar包使用 restart 类加载器即可。

    在 src/main/resources 中创建 META-INF 目录,在此目录下添加 spring-devtools.properties 配置,内容如下:

    restart.include.mapper=/mapper-[\w-\.]+jar
    restart.include.pagehelper=/pagehelper-[\w-\.]+jar
    使用这个配置后,就会使用 restart 类加载加载 include 进去的 jar 包。




    如果没有,那么请先移步 http://blog.csdn.net/catoop/article/details/50553714 做了解后,再按本文步骤操作。

    使用MyBatis在我们通过xml集中配置SQL,并通过创建接口Mapper文件来完成持久化DAO层(mybatis内部使用的是动态代理,所以我们不需要自己编写实现类)。

    然而在实际开发中,单表操作非常多,如果你也想像JPA、JDBC那样做一个所谓的BaseDao。那么可以实现一个通用Mapper来达到目的。
    现在有现成的通用Mapper插件,我们无需重新创造轮子(代码是开源的,你也可以自己在其基础上修改)。

    通用Mapper插件网址:http://git.oschina.net/free/Mapper

    https://yq.aliyun.com/articles/5831

  • 相关阅读:
    mac安装go环境
    Ubuntu-Mininet安装
    安装pyenv
    linux下安装weblogic
    C#常用方法
    jenkins部署net core ——2
    jenkins部署net core ——1
    Inno Steup
    安装两个SQL server 实例
    C#线程启动、暂停、恢复、停止怎么实现
  • 原文地址:https://www.cnblogs.com/softidea/p/6065481.html
Copyright © 2020-2023  润新知