通用Mapper的使用

1:通用Mapper结合JPA 注解通过反射拼接出xml形式的动态的sql去执行,省去了原来配置的大量xml类型的sql文件。
2:它就是个辅助mybatis极简单表开发的组件。它不是为了替代mybatis,而是让mybatis的开发更方便。

springboot配置的通用mapper的形式

<!--mybatis-->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>1.3.1</version>
</dependency>
<!--mapper增强mybatis不是替代-->
<dependency>
  <groupId>tk.mybatis</groupId>
  <artifactId>mapper-spring-boot-starter</artifactId>
  <version>1.1.4</version>
</dependency>

非springboot项目应用的方式

	<!-- Mybatis -->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>${mybatis.version}</version>
       </dependency>
	<dependency>
		<groupId>tk.mybatis</groupId>
		<artifactId>mapper</artifactId>
		<version>3.4.0</version>
	</dependency>

修改配置

注意这里使用 tk.mybatis.spring.mapper.MapperScannerConfigure
替换原来
Mybatis的 org.mybatis.spring.mapper.MapperScannerConfigurer

springboot形式的修改方式 1

import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@EnableTransactionManagement
@ComponentScan
@MapperScan(basePackages="com.sinog2c.dao",markerInterface= MyMapper.class)
public class ApiApplication {

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

}

springboot形式的修改方式 2

package com.zhuma.demo.config.mybatis;

import com.zhuma.demo.comm.mapper.CrudMapper;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
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;

@Configuration
@AutoConfigureAfter(MybatisAutoConfiguration.class)
public class MyBatisConfig {

	@Bean
	public MapperScannerConfigurer mapperScannerConfigurer() {
		MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
		mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
		mapperScannerConfigurer.setBasePackage("com.zhuma.demo.mapper");

		Properties properties = new Properties();
		properties.setProperty("mappers", CrudMapper.class.getName());
		properties.setProperty("notEmpty", "false");
		properties.setProperty("IDENTITY", "MYSQL");
		properties.setProperty("ORDER","BEFORE");
		mapperScannerConfigurer.setProperties(properties);
		return mapperScannerConfigurer;
	}

}

非springboot形式的修改 1

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <plugins>

        <!-- 如何有分页插件,一定要放在通用mapper的上面 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql"/>
            <property name="reasonable" value="true"/>
        </plugin>
        <!--这里插件的作用就是替换MapperScannerConfigurer-->
        <plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
            <!--================================================-->
            <!--可配置参数说明(一般无需修改)-->
            <!--================================================-->

            <!--UUID生成策略-->
            <!--配置UUID生成策略需要使用OGNL表达式-->
            <!--默认值32位长度:@java.util.UUID@randomUUID().toString().replace("-", "")-->
            <!--<property name="UUID" value="@java.util.UUID@randomUUID().toString()"/>-->

            <!--主键自增回写方法,默认值MYSQL,详细说明请看文档-->
            <property name="IDENTITY" value="MYSQL"/>

            <!--序列的获取规则,使用{num}格式化参数,默认值为{0}.nextval,针对Oracle-->
            <!--可选参数一共3个,对应0,1,2,分别为SequenceName,ColumnName,PropertyName-->
            <property name="seqFormat" value="{0}.nextval"/>

            <!--主键自增回写方法执行顺序,默认AFTER,可选值为(BEFORE|AFTER)-->
            <!--<property name="ORDER" value="AFTER"/>-->

            <!--通用Mapper接口,多个通用接口用逗号隔开-->
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
        </plugin>

    </plugins>

</configuration>

非springboot形式的修改 2

<!-- 通用 Mapper -->
<beanclass="tk.mybatis.spring.mapper.MapperScannerConfigurer">
  <propertyname="basePackage"value="cn.com.bluemoon.bd.service.spider.dao"/>
  <propertyname="properties">
    <value>
      mappers=tk.mybatis.mapper.common.Mapper
    </value>
  </property>
</bean>

总结

通用mapper的配置就是替换原来mybatis的MapperScannerConfigurer类。

UserMapper接口继承通用Mapper

package com.myx.demo.mapper;
import com.myx.demo.pojo.User;
import tk.mybatis.mapper.common.Mapper;

public interface UserMapper extends Mapper<User>{

}

配置User实体类,里面用到的jpa注解都是通用Mapper依赖自带的,无需引入其他包,且只对通用Mapper的sql语句生效。

@Table(name = "tb_user")
public class User {


    @Id
    @GeneratedValue(generator = "JDBC")
    private Long id;
    // 用户名
    private String userName;
    // 密码 于表中的字段没有对应关系的时候,使用Transient进行忽略。
    @Transient
    private String password;
   
   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值