myatbis的一个好的封装
package com.pj.project4sp; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import com.pj.project4sp.public4mapper.PublicMapper;
import com.pj.project4sp.public4mapper.PublicService; /**
* 公共Mapper 与 公共Service
* @author kong
*
*/
@Component
public class SP { /**
* 公共Mapper
*/
public static PublicMapper publicMapper;
/**
* 公共Service
*/
public static PublicService publicService; // 注入
@Autowired
public void setBean(
PublicMapper publicMapper,
PublicService publicService
) {
SP.publicMapper = publicMapper;
SP.publicService = publicService;
} }
package com.pj.project4sp.public4mapper; import java.util.List; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import com.pj.utils.so.SoMap; /**
* 公用Mapper,封装一些常见的Mapper操作,避免某些及其简单的逻辑也要写一堆xml方法
* @author kong
* 更新于2020-12-1 新增部分方法
*
*/
@Mapper
public interface PublicMapper { // ------------------------ 一些工具方法 ------------------------ /**
* 返回上一句SQL插入的自增主键值
* @return
*/
public long getPrimarykey(); // ------------------------ 新增SQL相关 ------------------------ // ------------------------ 删除SQL相关 ------------------------ /**
* 根据id删除一条记录
* @param tableName 表名字
* @param id id值
* @return
*/
public int deleteById(
@Param("tableName")String tableName,
@Param("id")Object id
); /**
* 根据指定列指定值删除一条记录
* @param tableName 表名
* @param whereName 条件列
* @param whereValue 条件列值
* @return
*/
public int deleteBy(
@Param("tableName")String tableName,
@Param("whereName") String whereName,
@Param("whereValue") Object whereValue
); /**
* 根据id列表批量删除
* @param tableName 表名字
* @param ids id列表
* @return
*/
public int deleteByIds(
@Param("tableName")String tableName,
@Param("ids")List<?> ids
); /**
* 根据指定列指定值删除多条记录
* @param tableName 表名
* @param whereName 条件列名
* @param whereList 条件列值
* @return
*/
public int deleteByWhereList(
@Param("tableName")String tableName,
@Param("whereName") String whereName,
@Param("whereList") List<?> whereList
); // ------------------------ 修改SQL相关 ------------------------ /**
* 指定表的指定字段增加指定值,可以为负值
* @param tableName 表名字
* @param columnName 列值
* @param num 增加的值
* @param id id值
* @return
*/
public int columnAdd(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("num") long num,
@Param("id") Object id
); /**
* 指定表的指定字段增加指定值,可以为负值
* @param tableName 表名字
* @param columnName 列名字
* @param num 增加的值
* @param ids id列表
* @return
*/
public int columnAddByIds(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("num") long num,
@Param("ids") List<?> ids
); /**
* 指定表的指定字段更新为指定值,根据指定id
* @param tableName 表名子
* @param columnName 列名
* @param value 值
* @param id id值
* @return
*/
public int updateColumnById(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("value") Object value,
@Param("id") Object id
); /**
* 指定表的指定字段更新为指定值,根据指定id列表
* @param tableName 表名子
* @param columnName 列名
* @param value 值
* @param ids id值
* @return
*/
public int updateColumnByIds(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("value") Object value,
@Param("ids") List<?> ids
); /**
* 指定表的指定字段更新为指定值, 根据指定列的指定值
* @param tableName 表名
* @param columnName 列名
* @param columnValue 列值
* @param whereName 条件列名
* @param whereValue 条件列值
* @return
*/
public int updateColumnBy(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("columnValue") Object columnValue,
@Param("whereName") String whereName,
@Param("whereValue") Object whereValue
); /**
* 指定表的指定字段SoMap集合更新为指定值,根据指定id
* @param tableName 表名
* @param soMap 要修改的列
* @param id id值
* @return
*/
public int updateBySoMapById(
@Param("tableName") String tableName,
@Param("soMap") SoMap soMap,
@Param("id") Object id
); /**
* 指定表的指定字段SoMap集合更新为指定值,指定列的指定值
* @param tableName 表名子
* @param soMap 要修改的列
* @param whereName 条件列值
* @param whereValue 条件列值
* @return
*/
public int updateBySoMapBy(
@Param("tableName") String tableName,
@Param("soMap") SoMap soMap,
@Param("whereName") String whereName,
@Param("whereValue") Object whereValue
); // ------------------------ 查询SQL相关 ------------------------ /**
* 获取指定表的指定字段值,根据id值
* @param tableName 表名
* @param columnName 列名
* @param id id值
* @return
*/
public String getColumnById(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("id") Object id
); /**
* 获取指定表的指定字段值,并转化为long,根据id值
* @param tableName 表名
* @param columnName 列名
* @param id id值
* @return
*/
public long getColumnByIdToLong(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("id") Object id
); /**
* 获取指定表的指定字段值,根据指定条件(whereName=whereValue)
* @param tableName 表名
* @param columnName 列名
* @param whereName 条件列名
* @param whereValue 条件列值
* @return
*/
public String getColumnByWhere(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("whereName") String whereName,
@Param("whereValue") Object whereValue
); /**
* 获取指定表的指定字段值列表,并转化为long, 根据指定条件(whereName=whereValue)
* @param tableName 表名
* @param columnName 列名
* @param whereName 条件列名
* @param whereValue 条件列值
* @return
*/
public List<Long> getColumnListToLongByWhere(
@Param("tableName") String tableName,
@Param("columnName") String columnName,
@Param("whereName") String whereName,
@Param("whereValue") Object whereValue
); /**
* 获取指定表的count数据,根据指定条件(whereName=whereValue)
* @param tableName 表名
* @param whereName 条件列名
* @param whereValue 条件列值
* @return
*/
public long getCountBy(
@Param("tableName") String tableName,
@Param("whereName") String whereName,
@Param("whereValue") Object whereValue
); // ------------------------ 查询集合SQL相关 ------------------------ /**
* 获取指定表的全部字段全部数据转化为Map
* @param tableName 表名子
* @return
*/
public List<SoMap> getListMap(@Param("tableName") String tableName); /**
* 获取指定表的全部字段全部数据转化为Map, 根据指定条件(whereName=whereValue)
* @param tableName 表名字
* @param whereName 条件列名
* @param whereValue 条件列值
* @return
*/
public List<SoMap> getListMapByWhere(
@Param("tableName") String tableName,
@Param("whereName") String whereName,
@Param("whereValue") Object whereValue
); /**
* 获取指定表的全部字段全部数据转化为Map, 根据指定条件(id=id)
* @param tableName 表名子
* @param id id值
* @return
*/
public List<SoMap> getListMapById(
@Param("tableName") String tableName,
@Param("id") Object id
); }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pj.project4sp.public4mapper.PublicMapper"> <!-- ======================== 一些工具方法 ======================== --> <!-- 返回上一句SQL插入的自增主键值 -->
<select id="getPrimarykey" resultType="long">
SELECT @@identity
</select> <!-- ======================== 新增SQL相关 ======================== --> <!-- ======================== 删除SQL相关 ======================== --> <!-- 删除一条记录,指定表名,id -->
<delete id="deleteById">
delete from ${tableName} where id = #{id}
</delete> <!-- 根据指定列指定值删除一条记录,// 参数: 表名、条件列表、条件列值 -->
<delete id="deleteBy">
delete from ${tableName} where ${whereName} = #{whereValue}
</delete> <!-- 删除一条记录,指定表名,id列表 -->
<delete id="deleteByIds">
delete from ${tableName}
where id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete> <!-- 根据指定列指定值删除多条记录 -->
<delete id="deleteByWhereList">
delete from ${tableName}
where ${whereName} in
<foreach collection="whereList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete> <!-- ======================== 修改SQL相关 ======================== --> <!-- 指定表的指定字段加num(可以小于0 ),根据指定id -->
<update id="columnAdd">
update ${tableName} set
${columnName} = IFNULL(${columnName}, 0) + #{num}
where id = #{id};
</update> <!-- 指定表的指定字段增加指定值,可以为负值 -->
<update id="columnAddByIds">
update ${tableName} set
${columnName} = ${columnName} + #{num}
where id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update> <!-- 指定表的指定字段更新为指定值,根据指定id -->
<update id="updateColumnById">
update ${tableName} set
${columnName} = #{value}
where id = #{id}
</update> <!-- 指定表的指定字段更新为指定值,根据指定id列表 -->
<update id="updateColumnByIds">
update ${tableName} set
${columnName} = #{value}
where id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update> <!-- 指定表的指定字段更新为指定值, 根据指定列的指定值 -->
<update id="updateColumnBy">
update ${tableName} set
${columnName} = #{columnValue}
where ${whereName} = #{whereValue}
</update> <!-- 指定表的指定字段SoMap集合更新为指定值,根据指定id -->
<update id="updateBySoMapById">
update ${tableName} set
<foreach collection="soMap.entrySet()" item="value" index="key" separator=",">
${key} = #{value}
</foreach>
where id = #{id}
</update> <!-- 指定表的指定字段SoMap集合更新为指定值,根据指定id -->
<update id="updateBySoMapBy">
update ${tableName} set
<foreach collection="soMap.entrySet()" item="value" index="key" separator=",">
${key} = #{value}
</foreach>
where ${whereName} = #{whereValue}
</update> <!-- ======================== 查询SQL相关 ======================== --> <!-- 获取指定表的指定字段值,根据id值 -->
<select id="getColumnById" resultType="String">
select ${columnName} from ${tableName}
where id = #{id}
</select> <!-- 获取指定表的指定字段值,并转化为long,根据id值 -->
<select id="getColumnByIdToLong" resultType="long">
select ${columnName} from ${tableName}
where id = #{id}
</select> <!-- 获取指定表的指定字段值,根据指定条件(whereName=whereValue) -->
<select id="getColumnByWhere" resultType="String">
select ${columnName} from ${tableName}
where ${whereName} = #{whereValue}
</select> <!-- 获取指定表的指定字段值列表,并转化为long, 根据指定条件(whereName=whereValue) -->
<select id="getColumnListToLongByWhere" resultType="long">
select ${columnName} from ${tableName}
where ${whereName} = #{whereValue}
</select> <!-- 获取指定表的count数据,根据指定条件(whereName=whereValue) -->
<select id="getCountBy" resultType="long">
select count(*) from ${tableName}
where ${whereName} = #{whereValue}
</select> <!-- ======================== 查询集合SQL相关 ======================== --> <!-- 获取指定表的全部字段全部数据 -->
<select id="getListMap" resultType="somap">
select * from ${tableName}
</select> <!-- 获取指定表的全部字段全部数据转化为Map, 根据指定条件(whereName=whereValue) -->
<select id="getListMapByWhere" resultType="somap">
select * from ${tableName}
where ${whereName} = #{whereValue}
</select> <!-- 获取指定表的全部字段全部数据转化为Map, 根据指定条件(id=id) -->
<select id="getListMapById" resultType="somap">
select * from ${tableName}
where id = #{id}
</select> </mapper>
myatbis的一个好的封装的更多相关文章
- 对Raphael画图标的一个jquery简单封装
公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...
- 对 JDBC 做一个轻量封装,待完善。。。
对 JDBC 做一个轻量地封装,顺便复习,熟悉sql,io,util,lang.Reflect等包的使用,泛型的使用,待完善... package com.webproj.utils; import ...
- 准备开始,选好第一个C#的封装库
如今C#做工业图像处理和开发,最多资料和例子的就是Emgu.不过现在人家开始商业收费了,对于我们这些小企业就不是很好了.这里,我要介绍和推荐的是另外一个也同样牛逼的C#封装Opnecv的库,叫做Ope ...
- 一个强大的封装好的pdo处理类
php5.5后就不支持mysql扩展了,也就是说这以后都不能使用msyql_conncet之类的函数了.不过没有关系,pdo比mysql有更多优势,写法也很简单,下面贴出一个来自互联网的pdo处理类. ...
- DirectX11 学习笔记4 - 一个完整的封装框架
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3EzNjExMDYzMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- 分享一个dapper简单封装
using System;using System.Data.Common;using System.Linq;using Dapper;using MySql.Data.MySqlClient; p ...
- AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来
# 面向对象的方式 实现加密方法 from Crypto.Cipher import AES from Crypto import Random from binascii import b2a_he ...
- Javascript:来一个AJAX封装函数
前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...
- 一个简单的定时器(NSTimer)的封装
在项目开发中我们有的时候需要用到计时器,比如登录超时,scrollview的滚动等,那么就让我们自己手动的去创建一个类库吧. 1 首先你需要一个向外提供创建的便捷方法. 1.1 这里考虑两种情况,一种 ...
- 一个高性能异步socket封装库的实现思路 (c#)
前言 socket是软件之间通讯最常用的一种方式.c#实现socket通讯有很多中方法,其中效率最高就是异步通讯. 异步通讯实际是利用windows完成端口(IOCP)来处理的,关于完成端口实现原理, ...
随机推荐
- Linux 挂载Windows共享文件夹和NAS存储
summary: [Linux 挂载共享存储] 概述 将Windows共享文件夹和NAS存储挂载至Linux. Linux系统环境:CentOS 挂载共享存储 查看外部主机共享了哪些目录 smbcli ...
- 【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
问题描述 使用微软API管理服务(Azure API Management),简称APIM. 因为公司策略要求只能内部网络访问,所以启用了VNET集成.集成方式见: (在内部模式下使用 Azure A ...
- 安装kali linux(干货)
安装kali 一. 准备工具 1. VMware Workstation Pro https://www.vmware.com/cn/products/workstation-pro/workstat ...
- 基于python的数学建模---传染病六个模型
六个模型的区别 SI-Model import scipy.integrate as spi import numpy as np import matplotlib.pyplot as plt # ...
- [排序算法] 2路插入排序 (C++)
前言 本文章是建立在 插入排序 的基础上写的,如果还有不懂 插入排序 的童鞋先停下脚步,可以先看看这里~ 直接/折半插入排序 2路插入排序解释 在 插入排序 中,当待插入元素需要插入的位置位于当前有序 ...
- [排序算法] 冒泡排序 (C++)
冒泡排序解释: 冒泡排序 BubbleSort 是一种最基础的交换排序.顾名思义,数组中的每一个元素就好像泡泡一样,根据自己的大小不同一点点的向一侧移动. 冒泡排序原理: 每一趟只能确定将一个数归位. ...
- C温故补缺(三):存储类声明符(auto,register,extern,static)
auto,register,extern,static 四个存储类声明符,用于定义变量/函数的作用域和声明周期 ① auto:自动变量,即普通变量,在平时定义变量时会自动赋予其auto类型 被auto ...
- 认证服务(keystone)
Keystone职能: Keystone (OpenStack ldentityService)是OpenStack中的一个独立的提供安全认证的模块,主要负责openstack用户的身份认证.令牌管理 ...
- include指令和include动作的区别
include指令和<jsp:include>动作标识的区别 1.include指令通过file属性指定被包含的文件,并且file属性不支持任何表达式: <jsp:include&g ...
- RGB以及RGBA
字母含义及取值 R:红色.0~255 整数 G:绿色.0~255 整数 B:蓝色.0~255 整数 A:透明度.0~1.整数或者小数 RGB和RGBA的关系 项目遇见一个需求,后台返回所占比例,前端根 ...