All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.webapp.mybatis.helper.BaseDao Maven / Gradle / Ivy

The newest version!

package com.webapp.mybatis.helper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectKey;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;

/**
 * @Date	 2016-11-26 17:53:50
 */
public interface BaseDao {

	/** insert handle **/
	@InsertProvider(type=SqlProvider.class,method="add")
    public boolean add(T model);

	@InsertProvider(type=SqlProvider.class,method="add")
	@SelectKey(statement="select last_insert_id()", keyProperty="id", before=false, resultType=Long.class)
	public boolean addForKey(T model);

	@InsertProvider(type=SqlProvider.class,method="adds")
	public boolean adds(@Param(SqlHelper.PKEY)List list);

	/** delete handle **/
	@DeleteProvider(type=SqlProvider.class, method="delById")
    public  boolean delById(U id);

	@DeleteProvider(type=SqlProvider.class, method="delAll")
    public boolean delAll();

	@DeleteProvider(type=SqlProvider.class, method="delByKv")
    public boolean delByKv(@Param(SqlHelper.PKEY)String key, @Param(SqlHelper.PVAL)Object val);

	@DeleteProvider(type=SqlProvider.class, method="delByMap")
    public boolean delByMap(Map params);

	@DeleteProvider(type=SqlProvider.class, method="delByWhere")
    public boolean delByWhere(Cnds where);

	@DeleteProvider(type=SqlProvider.class, method="delBySql")
    public boolean delBySql(String sql);


	/** update handle **/
	@UpdateProvider(type=SqlProvider.class, method="updById")
	public boolean updById(T model);

	@UpdateProvider(type=SqlProvider.class, method="updByKv")
	public boolean updByKv(@Param(SqlHelper.PKEY)String key, @Param(SqlHelper.PVAL)T model);

	@UpdateProvider(type=SqlProvider.class, method="updBySql")
	public String updBySql(String sql);


	/** select handle **/
	@SelectProvider(type=SqlProvider.class, method="getById")
	public  T getById(U id);

	@SelectProvider(type=SqlProvider.class, method="getAll")
	public List getAll();

	@SelectProvider(type=SqlProvider.class, method="getByKv")
	public List getByKv(@Param(SqlHelper.PKEY)String key, @Param(SqlHelper.PVAL)Object val);

	@SelectProvider(type=SqlProvider.class, method="getByKv")
	public T getOneByKv(@Param(SqlHelper.PKEY)String key, @Param(SqlHelper.PVAL)Object val);

	@SelectProvider(type=SqlProvider.class, method="getByMap")
	public List getByMap(Map params);

	@SelectProvider(type=SqlProvider.class, method="getByWhere")
	public List getByWhere(Cnds where);

	@SelectProvider(type=SqlProvider.class, method="getBySql")
	public List getBySql(String sql);

	@SelectProvider(type=SqlProvider.class, method="getBySql")
	public List> getMapBySql(String sql);

	@SelectProvider(type=SqlProvider.class, method="getByWhere")
	public T getOneByWhere(Cnds where);

	@SelectProvider(type=SqlProvider.class, method="getBySql")
	public T getOneBySql(String sql);


	/** count handle **/
	@SelectProvider(type=SqlProvider.class, method="count")
	public Integer count();

	@SelectProvider(type=SqlProvider.class, method="countByKv")
	public Integer countByKv(@Param(SqlHelper.PKEY)String key, @Param(SqlHelper.PVAL)Object val);

	@SelectProvider(type=SqlProvider.class, method="countByMap")
	public Integer countByMap(Map params);

	@SelectProvider(type=SqlProvider.class, method="countByWhere")
	public Integer countByWhere(Cnds where);

	@SelectProvider(type=SqlProvider.class, method="countBySql")
	public Integer countBySql(String sql);

	static class SqlProvider {

		public String add(T model){
			return Sqls.insert(model);
		}
		public String adds(Map> models){
			return Sqls.insert(models.get(SqlHelper.PKEY));
		}

		public String delById(Integer id){
			return Sqls.deleteInner().where(SqlHelper.id());
		}
		public String delAll(){
			return Sqls.deleteInner().toSql();
		}
		public String delByKv(Map param){
			return Sqls.deleteInner().where(SqlHelper.kv(param));
		}
		public String delByMap(Map params){
			return Sqls.deleteInner().where(SqlHelper.model(params));
		}
		public String delByWhere(Cnds where){
			return Sqls.deleteInner().where(where);
		}
		public String delBySql(String sql){
			return sql;
		}

		public String updById(T model){
			return Sqls.updateInner(model).where(SqlHelper.id());
		}
		public String updByKv(Map param){
			return Sqls.updateInner(param).where(SqlHelper.pk(param));
		}
		public String updBySql(String sql){
			return sql;
		}

		public String getById(Integer id){
			return Sqls.selectInner(SqlHelper.SEL_COLS).where(SqlHelper.id());
		}
		public String getAll(){
			return Sqls.selectInner(SqlHelper.SEL_COLS).toSql();
		}
		public String getByKv(Map param){
			return Sqls.selectInner(SqlHelper.SEL_COLS).where(SqlHelper.kv(param));
		}
		public String getByMap(Map params){
			return Sqls.selectInner(SqlHelper.SEL_COLS).where(SqlHelper.model(params));
		}
		public String getByWhere(Cnds where){
			return Sqls.selectInner(SqlHelper.SEL_COLS).where(where);
		}
		public String getBySql(String sql){
			return sql;
		}

		public String count(){
			return Sqls.countInner().toSql();
		}
		public String countByKv(Map param){
			return Sqls.countInner().where(SqlHelper.kv(param));
		}
		public String countByMap(Map params){
			return Sqls.countInner().where(SqlHelper.model(params));
		}
		public String countByWhere(Cnds where){
			return Sqls.countInner().where(where);
		}
		public String countBySql(String sql){
			return sql;
		}
	}
}