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的一个好的封装的更多相关文章

  1. 对Raphael画图标的一个jquery简单封装

    公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...

  2. 对 JDBC 做一个轻量封装,待完善。。。

    对 JDBC 做一个轻量地封装,顺便复习,熟悉sql,io,util,lang.Reflect等包的使用,泛型的使用,待完善... package com.webproj.utils; import ...

  3. 准备开始,选好第一个C#的封装库

    如今C#做工业图像处理和开发,最多资料和例子的就是Emgu.不过现在人家开始商业收费了,对于我们这些小企业就不是很好了.这里,我要介绍和推荐的是另外一个也同样牛逼的C#封装Opnecv的库,叫做Ope ...

  4. 一个强大的封装好的pdo处理类

    php5.5后就不支持mysql扩展了,也就是说这以后都不能使用msyql_conncet之类的函数了.不过没有关系,pdo比mysql有更多优势,写法也很简单,下面贴出一个来自互联网的pdo处理类. ...

  5. DirectX11 学习笔记4 - 一个完整的封装框架

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3EzNjExMDYzMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  6. 分享一个dapper简单封装

    using System;using System.Data.Common;using System.Linq;using Dapper;using MySql.Data.MySqlClient; p ...

  7. AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来

    # 面向对象的方式 实现加密方法 from Crypto.Cipher import AES from Crypto import Random from binascii import b2a_he ...

  8. Javascript:来一个AJAX封装函数

    前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...

  9. 一个简单的定时器(NSTimer)的封装

    在项目开发中我们有的时候需要用到计时器,比如登录超时,scrollview的滚动等,那么就让我们自己手动的去创建一个类库吧. 1 首先你需要一个向外提供创建的便捷方法. 1.1 这里考虑两种情况,一种 ...

  10. 一个高性能异步socket封装库的实现思路 (c#)

    前言 socket是软件之间通讯最常用的一种方式.c#实现socket通讯有很多中方法,其中效率最高就是异步通讯. 异步通讯实际是利用windows完成端口(IOCP)来处理的,关于完成端口实现原理, ...

随机推荐

  1. jupyter notebook使用相对路径的方法

    在当前文件夹路径下开启jupyter notebook 这样就可以直接使用相对路径了,而不用管绝对路径这一令人心烦的问题 首先需要重新安装PowerShell 下载链接:https://cloud.1 ...

  2. MongoDB导入导出备份数据

    需要提前安装mongodb-database-tools参考:centos离线安装mongodb-database-tools 导出数据 常用的导出有两种:mongodump和mongoexport, ...

  3. UWSGI 安装出现 ModuleNotFoundError: No module named '_ctypes'

    原因:Python3中有个内置模块叫ctypes,它是Python3的外部函数库模块,它提供兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用C ...

  4. AArch32/AArch64应用程序级内存模型(五)

    本文主要为了记录在学习armv8的过程中的一些感悟.由于原文部分章节晦涩难懂,作者参考了网上很多优秀博主的部分章节(可能是直接摘录)并结合自己的理解重新整理了当前这个版本.文中不免有部分章节讲解很浅, ...

  5. Armv8之Execution State 和 Exception Level(一)

    @ 目录 1. 典型的Exception Level使用模型 2.异常相关术语 3. Execution State 3.1 两种Execution State 3.2 决定Execution Sta ...

  6. 基于Sklearn机器学习代码实战

    LinearRegression 线性回归入门 数据生成 为了直观地看到算法的思路,我们先生成一些二维数据来直观展现 import numpy as np import matplotlib.pypl ...

  7. 【第7篇】AI语音交互原理介绍

    本章主要介绍AI语音交互的原理,包括语音交互的流程以及各流程节点所涉及的相关知识,如语音采集.语音识别.自然语言处理.语音合成等. 2.1 AI语音交互 AI语音交互通俗点说就是人与机器间进行语音理解 ...

  8. SQL注入绕waf思路总结

    1.关键字大小写混合绕过 关键字大小写混合只针对于小写或大写的关键字匹配技术-正则表达式,如果在匹配时大小写不敏感的话,就无法绕过.这是最简单的一个绕过技术. 例如:将union select混写成U ...

  9. 一文教会你如何在内网搭建一套属于自己小组的在线 API 文档?

    Hello,大家好,我是阿粉,对接文档是每个开发人员不可避免都要写的,友好的文档可以大大的提升工作效率. 阿粉最近将项目的文档基于 Gitbook 和 Gitlab 的 Webhook 功能的在内网部 ...

  10. 【Shell案例】【for循环、seq生成】3、输出7的倍数

    描述写一个 bash脚本以输出数字 0 到 500 中 7 的倍数(0 7 14 21...)的命令 方法1:in方式循环 [if的括号是中括号,中间的条件要有空格] [循环体用do和done配对] ...