码迷,mamicode.com
首页 > 其他好文 > 详细

easymybatis——mybatis开发利器

时间:2018-02-12 16:45:06      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:integer   聚合   start.s   ext   dao   数据   没有   std   主键   

easymybatis是一个mybatis增强类库,目的为简化mybatis的开发,让开发更高效。

easymybatis的特性如下:

  • 无需编写xml文件即可完成CRUD操作。
  • 支持多表查询、聚合查询、分页查询(支持多种数据库)。
  • 支持批量添加,指定字段批量添加。
  • 支持Dao层访问控制,如某个dao只有查询功能,某个dao有crud功能等。
  • 支持自定义sql,sql语句可以写在配置文件中,同样支持mybatis标签。
  • 支持mysql,sqlserver,oracle,其它数据库扩展方便(增加一个模板文件即可)。
  • 使用方式不变,与Spring集成只改了一处配置。
  • 支持与springboot集成。
  • mybatis参数设置灵活,继承mybatis官方设置方式。
  • 轻量级,无侵入性,可与传统mybatis用法共存。
  • 没有修改框架源码(无插件),可同时使用官方提供的功能。

easymybatis支持的功能如下:

  • 基本的CRUD
  • 主键策略设置
  • 字段填充功能
  • 枚举属性
  • 全局Dao
  • 乐观锁
  • 逻辑删除

架构组成

easymybatis的架构如下:

技术分享图片

运行流程

easymybatis的运行流程图:

技术分享图片

  1. 服务器启动的时候easymybatis负责扫描Dao.java。
  2. 扫描完成后解析出Dao.class以及实体类Entity.class。
  3. 代码生成组件根据Dao.class和Entity.class生成mapper文件内容,生成方式由velocity模板指定。
  4. 把mapper文件内容转化成Resource对象设置到SqlSessionFactory中。

快速开始

创建springboot项目

访问http://start.spring.io/ 生成一个springboot空项目,输入Group,Artifact点生成即可,如图: 

技术分享图片

点击Generate Project,下载demo.zip

导入项目

将下载的demo.zip解压,然后导入项目。eclipse中右键 -> Import... -> Existing Maven Project,选择项目文件夹。导入到eclipse中后等待maven相关jar包下载。

添加maven依赖

jar包下载完成后,打开pom.xml,添加如下依赖:

<!-- easymybatis的starter -->
<dependency>
    <groupId>net.oschina.durcframework</groupId>
    <artifactId>easymybatis-spring-boot-starter</artifactId>
    <version>1.7.2</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

 

添加数据库配置

在application.properties中添加数据库配置

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/stu?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=root

 

添加Java文件

假设数据库中有张t_user表,DDL如下:

CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘ID‘,
  `username` varchar(255) DEFAULT NULL COMMENT ‘用户名‘,
  `state` tinyint(4) DEFAULT NULL COMMENT ‘状态‘,
  `isdel` bit(1) DEFAULT NULL COMMENT ‘是否删除‘,
  `remark` text COMMENT ‘备注‘,
  `add_time` datetime DEFAULT NULL COMMENT ‘添加时间‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘用户表‘;

 

我们加入对应的实体类和Dao:

  • TUser.java :
@Table(name = "t_user")
public class TUser { 
    @Id
    @Column(name="id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;    // ID  
    private String username; // 用户名   
    private Byte state;    // 状态  
    private Boolean isdel; // 是否删除    
    private String remark; // 备注  
    private Date addTime;  // 添加时间
    
    // 省略 getter setter
}

 

实体类文件采用和hibernate相同的方式,您可以使用我们的代码生成工具生成 https://gitee.com/durcframework/easymybatis-generator

  • TUserDao.java :
public interface TUserDao extends CrudDao<TUser> {
}

 

TUserDao继承CrudDao即可,这样这个Dao就拥有了CRUD功能。

添加测试用例

public class TUserDaoTest extends DemoApplicationTests {

    @Autowired
    TUserDao dao;

        @Test
    public void testInsert() {
        TUser user = new TUser();
        user.setIsdel(false);       
        user.setRemark("testInsert");        
        user.setUsername("张三");
        
        dao.save(user);
        
        System.out.println("添加后的主键:" + user.getId());        
    }
    
    @Test
    public void testGet() {
        TUser user = dao.get(3);
        System.out.println(user);                
    }

        @Test
    public void testUpdate() {
        TUser user = dao.get(3);
        user.setUsername("李四");      
        user.setIsdel(true);
        
        int i = dao.update(user);
        System.out.println("testUpdate --> " + i);
    }

        @Test
    public void testDel() {
        TUser user = new TUser();
        user.setId(3);
        int i = dao.del(user);
        System.out.println("del --> " + i);
    }
}

 

然后运行单元测试,运行成功后表示项目已经搭建完毕了。

最后项目结构图:

技术分享图片

 

在springmvc结构项目中使用easymybatis

  • 在maven中添加easymybatis.jar
<!-- easymybatis -->
        <dependency>
            <groupId>net.oschina.durcframework</groupId>
            <artifactId>easymybatis</artifactId>
            <version>1.7.2</version>
        </dependency>

 

  • 替换SqlSessionFactoryBean为SqlSessionFactoryBeanExt,并且添加一个basePackage属性
<!-- 替换org.mybatis.spring.SqlSessionFactoryBean -->
    <bean id="sqlSessionFactory"
        class="net.oschina.durcframework.easymybatis.ext.SqlSessionFactoryBeanExt">
        <property name="dataSource" ref="dataSource" />        
        ...
        <!-- 以下是附加属性 -->        
        <!-- dao所在的包名,跟MapperScannerConfigurer的basePackage一致 
            多个用;隔开
        -->
        <property name="basePackage" value="com.example.demo2.dao" />        
    </bean>

 

最后添加实体类和dao即可运行了。

easymybatis——mybatis开发利器

标签:integer   聚合   start.s   ext   dao   数据   没有   std   主键   

原文地址:https://www.cnblogs.com/tanghc/p/8444640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!