spring-boot集成mybatis

前言

如果你是一个j2ee开发工程师,你一定不能不会spring,你一定不能不了解spring-boot,你一定不能不知道最火的orm框架Mybatis。

本文使用spring-boot集成mybatis,体会下spring-boot + mybatis实现效率开发数据层代码。

一分钟创建工程

通过idea创建spring-boot项目,File->New->Project...:

image

点击Next配置你的项目的基础信息,再点击Next,勾选需要的依赖:
image

创建完毕。耗时不到半分钟。

对于非idea使用的用户,可以直接登录https://start.spring.io,用同样的方式打包你的程序即可。

mybatis自动生成代码

通过mybatis-generator技术来自动生成数据库层相关代码。

大致分为三步:

  1. 创建表结构。
  2. 配置 generatorConfig.xml
  3. 依赖 mybatis-generator-maven-plugin 并运行创建

创建表结构

创建一个简单的用户表:

CREATE TABLE `sbp_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `nick_name` varchar(50) NOT NULL DEFAULT '' COMMENT '昵称',
  `password` varchar(50) NOT NULL DEFAULT '' COMMENT '密码',
  `mobile` varchar(15) DEFAULT NULL COMMENT '手机号码',
  `create_at` bigint(20) NOT NULL,
  `update_at` bigint(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;

配置 generatorConfig.xml

以下配置文件都放置在classpath下:

generator.properties文件:

## jdbc
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.0.0.20:3306/spring-boot-practice?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

## model
model.targetPackage=com.crw.model

## DAO
dao.targetPackage=com.crw.mapper
dao.type=XMLMAPPER

## table.name=product_honor
table.name=sbp_user

generatorConfig.xml文件:




    
    
    
    
        

        
            
        

        

        
            
        

        
            
            
            
            
        
        
        
            
        

        
            
            
            
            
        

        

附录:mybatis generator 配置详解,参考资料:http://www.jianshu.com/p/e09d2370b796







 




    
    
    
    
    
    
    
    

    
    
    

    
    
        
    

    
    
        
        
    


    
    
        
        

        
        

        
        

        
        

        
        
    


    
    
        
        
    


    
    
        
        

        
    

    
    

        
        

        
        

        
        

        

        

        

        

        

        
        

        
        


        

        


         
         
             
             

             

             

             

             
         

         
    

通过mybatis-generator-maven-plugin插件生产代码

配置maven依赖:


    
        ...
        
        
            org.mybatis.generator
            mybatis-generator-maven-plugin
            1.3.4
            
                true
                true
            
            
                
                    mysql
                    mysql-connector-java
                    5.1.41
                
            
        
    

运行命令:

mvn mybatis-generator:generate

即可生成相应的代码至相应的配置目录。

集成mybatis

三步完成集成:

  1. 添加maven依赖
  2. 配置数据源和Mybatis
  3. 单元测试

添加maven依赖

依赖spring-boot相关以及jdbc相关:


    
    
        org.springframework.boot
        spring-boot-starter
    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
        org.springframework.boot
        spring-boot-starter-test
        test
    

    
    
        org.mybatis.spring.boot
        mybatis-spring-boot-starter
        1.3.1
    
    
        mysql
        mysql-connector-java
        5.1.41
    
    
        com.alibaba
        druid
        1.0.18
    

配置数据源和Mybatis

配置spring-boot的application.yml(如果喜欢用application.properties)的改成相应的格式即可。

如下创建连接池和mybatis配置:

# jdbc-DruidDataSource连接池配置
sbp.datasource:
  type: com.alibaba.druid.pool.DruidDataSource
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/spring-boot-practice?useUnicode=true&characterEncoding=utf8mb4&useSSL=false&autoReconnect=true
  username: root
  password: root
  
# mybatis
mybatis:
  mapperLocations: classpath:mapper/*.xml
  configuration.mapUnderscoreToCamelCase: true

创建DataSource,映射配置文件内容,扫描mapper接口:

@Configuration
@MapperScan(basePackages = "com.crw.mapper")
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "sbp.datasource")
    public DataSource datasource() {
        return new DruidDataSource();
    }

}

单元测试

测试mybatis是否正常:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = App.class)
public class SbpUserMapperTest {

    @Autowired
    private SbpUserMapper sbpUserMapper;

    @Test
    @Rollback
    public void insert() throws Exception {
        long now = System.currentTimeMillis();
        int id = sbpUserMapper.insert(new SbpUser(1L, "张三", "111111", "11100001001", now, now));
        Assert.assertEquals(id, 1L);
    }

    @Test
    @Rollback
    public void selectByPrimaryKey() throws Exception {
        SbpUser user = sbpUserMapper.selectByPrimaryKey(1L);
        Assert.assertEquals("张三", user.getNickName());
    }

    @Test
    @Rollback
    public void update() throws Exception {
        long now = System.currentTimeMillis();
        sbpUserMapper.updateByPrimaryKey(new SbpUser(1L, "张三改", "111111", "11100001001", now, now));
        SbpUser user = sbpUserMapper.selectByPrimaryKey(1L);
        Assert.assertEquals("张三改", user.getNickName());
    }

    @Test
    @Rollback
    public void selectByExample() throws Exception {
        SbpUserExample example = new SbpUserExample();
        SbpUserExample.Criteria criteria = example.createCriteria();
        criteria.andMobileEqualTo("11100001001");
        List users = sbpUserMapper.selectByExample(example);
        Assert.assertEquals(users.size(), 1);
    }
}

运行之后正常CRUD,完成spring-boot与Mybatis的集成。

结束语

本篇文章从创建spring-boot项目开始介绍了集成mybatis的过程。
可以见到spring-boot是多么的高效:

  • 一分钟(半分钟)创建spring-boot项目
  • 三步完成myybatis代码自动生成
  • 三步配置集成mybatis

前后大概10分钟时间绰绰有余了。效率是不是不差于世界上最好的PHP呢?(:D)

你可能感兴趣的:(spring-boot集成mybatis)