我爱编程

SpringBoot集成MyBatisCommonMapper

2018-05-28  本文已影响0人  Peacenloves

1. pom配置

  1. 引入spring boot, mybatis-spring, tk.mybatis, h2测试数据库
<!--Spring boot parent-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.11.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <!--boot 测试包-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    <!--mybatis spring boot starter POMS-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!--tk mybatis common mapper starter POMS-->
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>1.2.3</version>
    </dependency>

    <!--h2 测试数据库-->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. yml配置

spring:
  datasource:
    schema: import.sql #h2数据库初始化sql
mybatis:
  mapper-locations: classpath:mappers/*.xml #mapper xml path
  type-aliases-package: org.ko.mybatis.domain #开启mybatis alias
  configuration:
    map-underscore-to-camel-case: true #开启自动下划线转驼峰

mapper:
  not-empty: true #
  before: true #
  mappers: tk.mybatis.mapper.common.Mapper #配置的mapper

3. 定义领域对象和mapper接口

import org.apache.ibatis.type.JdbcType;
import tk.mybatis.mapper.annotation.ColumnType;

import javax.persistence.Id;
import java.io.Serializable;

public class Country implements Serializable {

    private static final long serialVersionUID = 6569081236403751407L;

    @Id
    @ColumnType(jdbcType = JdbcType.BIGINT)
    private Long id;

    private String countryCode;

    private String countryName;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCountryCode() {
        return countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public String getCountryName() {
        return countryName;
    }

    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }
}
import org.ko.mybatis.domain.Country;

import java.util.List;

public interface CountryMapper extends tk.mybatis.mapper.common.Mapper<Country> {

    List<Country> findAll();
}

4. mapper xml

<mapper namespace="org.ko.mybatis.mapper.CountryMapper">
    <select id="findAll" resultType="Country">
        select * from country
    </select>
</mapper>

5. 启动类

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

@SpringBootApplication
@MapperScan("org.ko.mybatis.mapper")
public class MyBatisApplication {

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

}

6. 测试类

import org.junit.Test;
import org.junit.runner.RunWith;
import org.ko.mybatis.domain.Country;
import org.ko.mybatis.mapper.CountryMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@SpringBootTest
@RunWith(SpringRunner.class)
public class MapperTest {

    private static final Logger _LOGGER = LoggerFactory.getLogger(MapperTest.class);

    @Autowired private CountryMapper countryMapper;

    @Test
    public void whenQueryCountrySuccess () {
        List<Country> countryList = countryMapper.selectAll();
        _LOGGER.info("country count: {}", countryList.size());
        assert countryList.size() > 0;
    }

    @Test
    public void whenInsertCountrySuccess () {
        //1. 插入
        Country country = new Country();
        country.setId(133337L);
        country.setCountryCode("DL");
        country.setCountryName("大连");
        int ret = countryMapper.insert(country);
        _LOGGER.info("insert country result: {}", ret);
        assert ret > 0;

        //2. 查询
        Country c = countryMapper.selectByPrimaryKey(133337L);
        _LOGGER.info("insert country name: {}", c.getCountryName());
    }

    @Test
    public void whenUpdateCountrySuccess () {
        //1. 更新
        Country country = new Country();
        country.setId(133337L);
        country.setCountryCode("DL");
        country.setCountryName("美丽的海滨城市大连");
        int ret = countryMapper.updateByPrimaryKeySelective(country);
        assert ret > 0;
        _LOGGER.info("update country result: {}", ret);

        //2. 查询
        Country c = countryMapper.selectByPrimaryKey(133337L);
        _LOGGER.info("update country name: {}", c.getCountryName());
    }

    @Test
    public void whenDeleteCountrySuccess () {
        //1. 删除
        int ret = countryMapper.deleteByPrimaryKey(1L);
        assert ret > 0;

        //2. 查询 183
        List<Country> countryList = countryMapper.selectAll();
        _LOGGER.info("country count: {}", countryList.size());
        assert countryList.size() == 182;
    }

    @Test
    public void whenSelectByExampleSuccess () {
        Example e = new Example(Country.class);
        e.createCriteria()
                .andLessThanOrEqualTo("id", 100L)
                .andGreaterThan("id", 50L);
        List<Country> countries = countryMapper.selectByExample(e);
        _LOGGER.info("select by example result count: {}", countries.size());
        assert countries.size() == 50;
    }
}

7.demo

github: https://github.com/uleetu/practice-drafts/tree/master/mybatis-common-mapper

上一篇下一篇

猜你喜欢

热点阅读