easymybatis——mybatis開發利器
阿新 • • 發佈:2018-02-12
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的運行流程圖:
- 服務器啟動的時候easymybatis負責掃描Dao.java。
- 掃描完成後解析出Dao.class以及實體類Entity.class。
- 代碼生成組件根據Dao.class和Entity.class生成mapper文件內容,生成方式由velocity模板指定。
- 把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開發利器