1. 程式人生 > >easymybatis——mybatis開發利器

easymybatis——mybatis開發利器

engine maven依賴 sts odi charset ref 架構 項目文件 key

easymybatis是一個mybatis增強類庫,目的為簡化mybatis的開發,讓開發更高效。

  • git地址:easymybatis
  • demo地址:demo with springboot

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開發利器