当前位置: 首页 > 工具软件 > easymybatis > 使用案例 >

easy-mybatis

弘志勇
2023-12-01

easy-mybatis

介绍

easy-mybatis是一款便捷的mybatis工具。那么,为什么要用easy-mybatis呢,它的便捷性体现在哪里?想想两个问题:

1. mybatis本身存在什么问题?

mybatis本身需要编写大量的xml(不同意?想想多表联查...)。

2. 比较流行的mybatisplus等mybatis产品解决了什么问题?

mybatisplus等mybatis产品解决的是对单表的操作,并没有根治多表联查疯狂配xml的烦恼。

所以,就有了引入easy-mybatis的必要。easy-mybatis是一个基于切面的mybatis产品。所以,它可以和任意的其他类型的mybatis产品兼容,请放心使用!

使用说明

Maven引用(点击 最新版本地址 查看最新版本)

<dependency>
    <groupId>io.github.xiaoyudeguang</groupId>
    <artifactId>easy-mybatis</artifactId>
    <version>3.1.8-RELEASE</version>
</dependency>

实体类编写

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zlyx.easycore.annotations.Desc;
import com.zlyx.easymybatis.annotations.ForeignKey;
import com.zlyx.easyweb.web.annotations.TableBean;

@TableBean(todo = { "" }, value = "db_person", alias = "per")
@TableName("db_person")
public class Person {

	@Desc(value = { "用户id" })
	@TableId("person_id") 
	private Long id;
 
        @Desc(value = { "用户姓名" })
	@TableField(value = "name")
	private String name;
	
	@Desc(value = { "部门名称" })
        @ForeignKey(key = "name", table = Dept.class)
	@TableField(value = "dept_name")
	private String deptName;
	
        @Desc(value = "部门实体对象")
	private Dept dept;
	
        ... 其他部分略(get和set方法)...
}

mapper接口编写

你可以像之前使用mybatis一样声明mapper接口,然后编写普通的mybatis方法;也可以继续像以前一样集成mybatisplus等产品。

import com.zlyx.easymybatis.abstraccts.AbstractMapper;
import com.zlyx.easymybatis.annotations.EasySelect;
import com.zlyx.easymybatis.annotations.Condition;
import com.zlyx.easymybatis.annotations.Table;
import com.zlyx.easymybatis.utils.Page;

@Mapper
public interface PersonMapper extends AbstractMapper<Person> {

	/**
	 * 一个普通的mybatis方法
	 */
	@Select(value = { "select * from swh_person" })
	public List<Person> testMybatis(String name);

	/**
	 * EasyMybatis多表联查方法
	 */
	@EasySelect(tableName = "db_person", results = { Table.FILED_ALL }, tables = {
			@Table(tableName = "db_dept") }, conditions = { @Condition(fields = { "name" }, tableName = "person") })
	public List<Person> testSelect(String name);

	/**
	 * EasyMybatis多表联查分页方法
	 */
	@EasySelect(tableName = "db_person", results = {Table.FILED_ALL},
			    tables = {
			    		@Table(tableName = "db_dept")
			    },
			    conditions = {
			    		@Condition(fields = { "name" }, tableName = "db_person")
			    }
			    page = true)
	 public Page<Person> testPage(String name, int pageNum, int pageSize);
}

testSelect方法,会被直接翻译为sql语句: select per.id as per_id, per.name = per_name, per.dept_name as per_deptName.... left join db_dept de on de.dept_name = per.dept_name from db_person per where per.name = "参数值"

testPage方法,会自动完成sql的生成和分页查询,是不是超简单?

如果你希望得到json类型的返回结果,只需要将方法中的实体类Person替换为JSONObject即可(fastjson)。

至于结果集映射,你就完全不需要关心了。easy-mybatis已经在结果集拦截器中都组装完成了,完全没有xml配置的烦恼。 

 类似资料: