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)来处理的,关于完成端口实现原理, ...
随机推荐
- Appscan的安装破解以及使用
本文简单介绍Appscan的安装和使用. 一.下载安装 可自行百度下载相关安装包(因较高版本的破解资料比较难找,建议下载9.0版本). 双击.exe安装文件进行安装,在弹出的安装指引中各选项默认安装即 ...
- OpenMP 教程(一) 深入人剖析 OpenMP reduction 子句
OpenMP 教程(一) 深入人剖析 OpenMP reduction 子句 前言 在前面的教程OpenMP入门当中我们简要介绍了 OpenMP 的一些基础的使用方法,在本篇文章当中我们将从一些基础的 ...
- 基于iNeuOS工业互联网平台的板材实时质检系统
1. 项目背景 刨花板生产线由于原料.生产工艺等原因,会有一些产品板面出现颤纹.漏砂.胶斑.胶块.大刨花.粉尘斑.板面划痕和油污等缺陷.表面缺陷会降低板材强度.影响板材外观和二次加工,给企业带来经济 ...
- 2022-11-03 Acwing每日一题
本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...
- ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置 操作系统:Ubuntu 18.04 虚幻引擎:4.26.2 目录 ROSIn ...
- ES系列二之常见问题解决
上篇ES系列一之java端API操作结束后本以为就相安无事了,但生产的问题是层出不穷的:下面我就再记录下近几周遇到的问题以及解决方案: 一 更新ES信息报错 报错信息如下: Use Elasticse ...
- 解决python3解压文件名乱码问题(unzip)
看来很多文章,不过我觉得最有效的还是改源码,因为我用的sublime text 3有插件Anaconda可以很方便的跳转到源码文件,你也可以入python3 的安装目录, 搜索 zipfile.py这 ...
- BrokenPipeError错误和subprocess.run()超时参数在Windows上无效
1.问题的发现 今天,一个在windows上运行良好的python脚本放到linux下报错,提示错误 BrokenPipeError: [Errno 32]Broken pipe.经调查是subp ...
- .net6+wpf制作指定局域网ip无法上网的arp欺诈工具
摘一段来自网上的arp欺诈解释:ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技 ...
- MySQL数据库和Python的交互
一.缘由 这是之前学习的时候写下的基础代码,包含着MySQL数据库和Python交互的基本操作. 二.代码展示 import pymysql ''' 1.数据库的链接和创建视图 ''' # db=py ...