easymybatis 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
easymybatis 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
easymybatis 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 猿敲月下码
适用人群 未知
收录时间 2017-08-22

软件简介

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

easymybatis的特性如下:

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

架构组成

easymybatis的架构如下:

架构

运行流程

easymybatis的运行流程图:

运行流程

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

快速开始

1 创建springboot项目

访问http://start.spring.io/ 生成一个springboot空项目,输入Group,Artifact点生成即可,如图: 创建空项目点击Generate Project,下载demo.zip

2 导入项目

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

3 添加maven依赖

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



	net.oschina.durcframework
	easymybatis-spring-boot-starter
	1.4.5


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


	mysql
	mysql-connector-java
	runtime

4 添加数据库配置

在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

5 添加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 {
}

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

6 添加测试用例

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);
	}
}

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

更多例子可参考TUserDaoTest.java。重点关注Dao,Query对象即可。

如果您不想从头开始搭项目的话,这里有个搭建好的demo项目可以为您使用。

两个版本,一个是基于springboot,一个是传统springmvc,推荐springboot。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(34) 发布并加入讨论🔥
发表了资讯
2018/01/09 10:00

EasyMybatis 1.7.0 发布,支持逻辑删除

大家好,easymybatis迎来了2018年的首次更新。此次更新正如标题所说,支持了逻辑删除功能,感觉是一个挺实用的功能。下面是说明文档: 逻辑删除 从1.7版本开始支持逻辑删除功能,即更新一个字段标记为已删除。查询的时候会自动过滤掉已删除的数据。 假设数据库表中有一个字段is_deleted类型为tinyint,0表示未删除,1表示已删除。 实体类对应代码如下: public class User {     @LogicDelete     private Byte i...

6
15
发表了资讯
2017/12/29 18:58

EasyMybatis 1.6.0 发布,支持乐观锁、全局 DAO

大家好,easymybatis 1.6.0终于赶在2017年末发布了。再次感谢各位对easymybatis的关注,感谢群里小伙伴提供的一些意见和建议,easymybatis将在2018年继续努力,争取给大家带来一个好用的框架。 本次更新内容如下: 新增乐观锁。doc 新增全局Dao。doc 新增根据普通bean查询。doc 新增@Condition注解(查询利器)。doc 至此 easymybatis 已经具备比较全面的开发能力了,日常开发已经不成问题。欢迎大家提供更好的意见和建议,可以...

3
25
发表了资讯
2017/12/26 10:35

EasyMybatis 1.5.0 发布,支持 PostgreSQL , SQLite

EasyMybatis 1.5.0 发布,此次更新内容如下: 支持PostgreSQL、SQLite 新增在线开发文档,文档地址:http://durcframework.gitee.io/easymybatis-doc/ 修复若干BUG 开发文档包含了对框架的介绍和使用,框架的大部分功能都写在了文档里面了,文档也会不定期的更新。文档目录如下: easymybatis是一个mybatis增强类库,目的为简化mybatis的开发,让开发更高效。 easymybatis的特性如下: 无需编写xml文件即可完成CRUD操作。 支持多...

4
35
发表了资讯
2017/10/12 11:47

EasyMybatis 1.3.1 发布,新增springboot-starter

EasyMybatis 1.3.1 发布,此次更新内容如下: 新增springboot-starter支持,搭建项目更加方便快捷。doc starter的maven依赖 <dependency>   <groupId>net.oschina.durcframework</groupId>   <artifactId>easymybatis-spring-boot-starter</artifactId>   <version>1.3.1</version> </dependency> 新增Dao继承模式。 关于easymybatis easymybatis是一个mybatis增强类库,目的为简化mybatis的开发,让开发更高效。 git地址:eas...

5
24
发表了资讯
2017/09/29 14:58

EasyMybatis 1.2.3 发布,新增字段填充功能

EasyMybatais 1.2.3 发布,此次更新内容如下: 新增字段填充功能:#IFAUM doc 现在可以使用字段自动填充功能了,因为表设计的时候大部分都有gmt_create,gmt_update这两个字段,所以对每张表都进行手动设置的话很容易错加、漏加。 easymybatis提供了两个辅助类DateFillInsert和DateFillUpdate,用来处理添加修改时的时间字段自动填充。配置了这两个类之后,时间字段将会自动设置。对于其它字段可以可以自定义扩展实现。参考文档 ...

3
31
发表了资讯
2017/09/22 11:47

EasyMybatis 1.2.2 发布,重要性能优化

EasyMybatais 1.2.2 发布,此次更新内容如下: 优化启动速度:#IF8NF 新增mapperSaveDir配置:指定mapper文件存放路径。因为easymybatis是直接将mapper内容注入到内存当中,开发人员无感知,并且不知道mapper内容是什么样子,这个功能就是让开发人员能够查看到对应的mapper内容,方便定位和排查问题。doc 其它代码优化 关于easymybatis easymybatis是一个mybatis增强类库,目的为简化mybatis的开发,让开发更高效。easymybatis...

2
51
发表了资讯
2017/09/12 17:00

EasyMybatis 1.2.0 发布,支持枚举类型字段

EasyMybatis 1.2.0 已发布,此次更新的内容有: 启用驼峰下划线转换。javaBean中的字段是驼峰形式,映射到数据库字段会转换成下划线形式。 doc 支持枚举类型字段。javaBean中可以定义枚举类型的字段了。 doc 同时demo也进行了更新,欢迎下载体验。 easymybatis是一个mybatis增强类库,目的为简化mybatis的开发,让开发更高效。 easymybatis的特性如下: 无需编写xml文件即可完成CRUD操作。 支持多表查询、聚合查询、分页查询(支...

3
38
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
34 评论
194 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部