easy-mybatis

easy-mybatis

介紹

easy-mybatis是一款便捷的mybatis工具。那麼,爲什麼要用easy-mybatis呢,它的便捷性體現在哪裏?想想兩個問題:

 1. mybatis本身存在什麼問題?
    
    mybatis本身需要編寫大量的xml(不同意?想想多表聯查...)。

 2. 比較流行的mybatisplus等mybatis產品解決了什麼問題?

    mybatisplus等mybatis產品解決的是對單表的操作,並沒有根治多表聯查瘋狂配xml的煩惱。

所以,就有了引入easy-mybatis的必要。easy-mybatis是一個基於切面的mybatis產品。所以,它可以和任意的其他類型的mybatis產品兼容,請放心使用!

使用說明

Maven引用(點擊 https://gitee.com/xiaoyudeguang/easy-version 查看最新版本)

<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接口編寫

PS:你可以像之前使用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的生成和分頁查詢,是不是超簡單?

這裏輸入引用文本你不需要關心之後的事情,後續的執行easy-mybatis會自己完成。執行完成後,會返回一個person集合對象,每個person對象中包含有一個dept對象。是的,這一切,都只需要一個@EasySelect註解就可以了。

如果你希望得到json類型的返回結果,只需要將方法中的List替換爲List即可(fastjson)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章