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)。