easymybatis

Mybatis 增强类库
授权协议 Apache
开发语言 Java
所属分类 程序开发、 其他开发相关
软件类型 开源软件
地区 国产
投 递 者 慕容坚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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。

  • easy-mybatis 介绍 easy-mybatis是一款便捷的mybatis工具。那么,为什么要用easy-mybatis呢,它的便捷性体现在哪里?想想两个问题: 1. mybatis本身存在什么问题? mybatis本身需要编写大量的xml(不同意?想想多表联查...)。 2. 比较流行的mybatisplus等mybatis产品解决了什么问题? mybatisplus等mybatis产品

  • easy-mybatis是一个对Mybatis的增强框架(插件)。在Spring集成Mybatis的基础上,将项目开发中对数据库的常用操作统一化。使用本框架可以很便捷的对数据库进行操作,提高开发效率,减少机械行为。 项目主页:https://mybatis.zuoyu.top API文档地址:https://mybatis.zuoyu.top/doc/index.html GitHub地址:htt

  • 本篇主要讲解easymybatis的查询功能。easymybatis提供丰富的查询方式,满足日常查询所需。 分页查询 方式1 前端传递两个分页参数pageIndex,pageSize // http://localhost:8080/page1?pageIndex=1&pageSize=10 @GetMapping("page1") public List<TUser> p

  • easy-mybatis是一个对Mybatis的增强框架(插件)。在Spring集成Mybatis的基础上,将项目开发中对数据库的常用操作统一化。使用本框架可以很便捷的对数据库进行操作,提高开发效率,减少机械行为。 Maven依赖引入 <!-- https://mvnrepository.com/artifact/top.zuoyu.mybatis/easy-mybatis-spring-boot

  • 分页查询 方式1 前端传递两个分页参数pageIndex,pageSize // http://localhost:8080/page1?pageIndex=1&pageSize=10 @GetMapping("page1") public List<TUser> page1(int pageIndex,int pageSize) { Query query = n

  • 在上一篇easymybatis的查询功能文章中大量用到了Query类,Query是一个查询参数类,通常配合Dao一起使用。 easymybatis的所有查询工作都是围绕Query类来进行,本文就来详细介绍一下这个类。 参数介绍 Query里面封装了一系列查询参数,主要分为以下几类: 分页参数:设置分页 排序参数:设置排序字段 条件参数:设置查询条件 字段参数:可返回指定字段 下面逐个讲解每个参数的

  • xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 net.oschina.durcframework easymybatis-springboot 1.0.0-SNAPSHOT jar easymybatis-springboot eas

  • 1.背景 使用easyMybatis持久层 2.参考网址 https://www.cnblogs.com/tanghc/p/8444741.html https://www.cnblogs.com/tanghc/p/8444706.html 3.解决问题 持久层中有条件时,条件关键字有所区别,调用jdbc是没有封装的.多练习.

 相关资料
  • 我正在逐个迭代字符串对象列表中的元素: 在这里,每次我调用list上的get()时,列表都会从其一端一直迭代到第i个元素——因此上面循环的复杂性是O(n^2)。 是a.)对于增强型for循环,与上面相同,还是b.)对于循环,将指针保持在最后一个指针所在的位置,因此下面循环的复杂性是O(n)? 如果上面的情况(b)——我想是这样的——在列表上使用迭代器有什么好处吗。这是简单的迭代--没有回头路 蒂亚

  • ZGC 或 Z 垃圾收集器是在 Java 11 中引入的,作为一种低延迟垃圾收集机制。ZGC 确保垃圾收集暂停时间不依赖于堆大小。无论堆大小是 2MB 还是 2GB,它都不会超过 10 毫秒。 但是 ZGC 在将未使用的堆内存返回给操作系统方面存在限制,例如 G1 和 Shenandoah 等其他 HotSpot VM GC。以下是使用 Java 13 完成的增强功能: ZGC 默认将未提交的内存

  • 我有一个手风琴,它在我的页面内工作得很好。当你点击标题时,隐藏的div会显示,当你再次点击它时,它会再次隐藏。我想通过增加一个功能来增强手风琴,使手风琴一次只显示一个项目。换句话说,如果我打开了一个项目,并单击另一个标题,则当前打开的项目将自动关闭。 这是HTML 这是我的jQuery代码 如您所见,我有一个main(div class=“cap”)后跟一个(div class=“capitalo

  • 除了agent和环境之外,强化学习的要素还包括策略(Policy)、奖励(reward signal)、值函数(value function)、环境模型(model),下面对这几种要素进行说明: 策略(Policy) ,策略就是一个从当环境状态到行为的映射; 奖励(reward signal) ,奖励是agent执行一次行为获得的反馈,强化学习系统的目标是最大化累积的奖励,在不同状态下执行同一个行

  • 我有以下ElasticSearch DSL查询 我希望在与字段匹配时提高得分,也希望在字段匹配时降低得分。 我试过很多事情,比如: 或 但不能让它工作。我也尝试过将should和must等结合起来,但并没有走得太远--甚至不值得分享。有没有一种简单的方法可以做到这一点,而不需要重新对我所有的文档进行重新德行/重新打分?使用ES查询(而不是ES-DSL)的答案也会很有帮助。

  • Java 是静态语言。但是 JVM 却不那么静态。静态语言的好处是,IDE 可以提供很高级的重构功能。缺点是你的代码 会比较僵化,像 Javascript 一样的动态语言(或者说,后绑定语言),在编写程序时的随心所欲,估计 Java 程序员 是享受不到了。 但是好在 Java 还提供了“反射”。 在任何时候,你如果想在运行时决定采用哪个实现类,或者调用哪个方法,通过反射都可以实现,虽然不那么方便

  • 插件可以增加 Vue 的全局/实例属性和组件选项。在这些情况下,在 TypeScript 中制作插件需要类型声明。庆幸的是,TypeScript 有一个特性来补充现有的类型,叫做模块补充 (module augmentation)。 例如,声明一个string类型的实例属性$myProperty: // 1. 确保在声明补充的类型之前导入 'vue' import Vue from 'vue'

  • 主要内容:Java11 增强String的API 的示例Java 11 为 String 引入了多项增强功能。 String.repeat(int) : 重复给定次数的字符串。返回连接的字符串。 String.isBlank() :检查字符串是否为空或只有空格。 String.strip() : 删除前导和尾随空格。 String.stripLeading() : 删除前导空格。 String.stripTrailing() : 删除尾随空格。 Str