Spring Boot成长之路 02 - MySql + MyBatis + 通用Mapper + PageHelper

引言

上一篇我们讲到了如何搭建一个简单的Spring Boot项目,在实际应用中,Spring Boot比较多用于搭建Spring Web项目。接下来将介绍如何使用Spring Boot、MySql、Mybatis等搭建一个可快速开发的应用框架。

1、为什么使用通用 Mapper?
通用Mapper是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example相关的单表操作。通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,使用它可以很方便的进行开发,可以节省开发人员大量的时间。

GitHub源码:https://github.com/abel533/Mapper
文档地址:https://github.com/abel533/Mapper/wiki

2、为什么使用PageHelper插件?
使用过Mybatis的朋友都知道,在需要分页查询的业务场景下,编写分页条件的语句相对会比较麻烦。MyBatis 分页插件 - PageHelper支持任何复杂的单表、多表分页,减少了我们开发量。

GitHub源码:https://github.com/pagehelper/Mybatis-PageHelper
文档地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md

详细步骤

引入jar包

在pom.xml中引入相关jar包

	 <properties>
        <!-- mysql -->
        <mysql.version>6.0.6</mysql.version>
        <!-- mybatis-->
        <mybatis.starter.version>1.3.2</mybatis.starter.version>
        <!-- 通用Mapper-->
        <mybatis.mapper.version>4.0.2</mybatis.mapper.version>
        <!-- PageHelper-->
        <mybatis.pagehelper.version>1.2.5</mybatis.pagehelper.version>
    </properties>

	<dependencies>
	    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>

        <!--mybatis所需依赖 begin-->
         <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.starter.version}</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>${mybatis.mapper.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>${mybatis.pagehelper.version}</version>
        </dependency>
        <!--mybatis所需依赖 end-->
    </dependencies>

添加配置

1、在application.yml文件中添加一下配置

mybatis:
  # mybatis扫描的xml文件(注意此路径此处不能用.来做分隔符)
  mapper-locations: classpath*:com/csdn/**/mapper/*.xml
  # mybatis扫描的实体文件
  type-aliases-package: com.csdn.**.entity

# 通用mapper,MyMapper为自定义封装的实体类
mapper:
  mappers: com.csdn.common.mybatis.MyMapper
  ORDER: BEFORE

# pagehelper分页插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params:
    count: countSql

2、在Spring Boot的启动类上添加Mapper扫描注解
注意@MapperScan要导入tk包下面的,不要导错。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@EnableTransactionManagement     //开启事务管理
@MapperScan("com.csdn.**.dao")   //与dao层的@Mapper二选一写上即可(主要作用是扫包)
@EnableEncryptableProperties
public class MyBatisApplication {

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

3、自定义通用 Mapper类

public interface MyMapper<T> extends Mapper<T>, IdsMapper<T> {
}

简单示例

1、Country.java实体类

public class Country {
    @Id
    // 通用 Mapper 中 Oracle 生成id方式: @KeySql(sql = "select sys_guid() from dual", order = ORDER.BEFORE)
    // 通用 Mapper 中 MySql 生成id方式
    @KeySql(sql = "select REPLACE(uuid(),'-','')", order = ORDER.BEFORE)
    private String  id;
    private String  countryname;
    private String  countrycode;

    //省略 getter 和 setter
}

2、CountryMapper.java
CountryMapper为调用数据库方法的DAO层接口类,该接口继承了通用Mapper接口。因此当我们在service层注入CountryMapper后,即可调用通用Mapper所封装好的方法。

public interface CountryMapper extends MyMapper<Country> {
}

3、CountryServiceImpl.java

public class CountryService{
	@Autowired
    protected CountryMapper mapper;
	
	public Country getCountryById(String  id){
		// 可直接调用通用Mapper封装好的增删改查方法
		Country country = mapper.selectByPrimaryKey(id);
		return country ;
	}
}

4、使用PageHelper快速查询分页数据
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。

	public List<Country> getCountryList(int pageNum,int pageSize){
        PageHelper.startPage(pageNum, pageSize);
		List<Country> list= mapper.selectAll();
		return list;
	}

此外,通用Mapper还提供更多好玩实用的方法,如专用代码生成器、通用代码生成器、二级缓存配置等。后续将持续更新,敬请关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值