mybatis执行传入的任意sql语句

首先,新建一个SqlMapper.xml,注意修改namespace

其实因为需要,我只用到了select,用LinkedHashMap是为了保证查询的字段值有序(存入与取出顺序一致)。

<?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="loneking.admin.mapper.SqlMapper">
    <select id="select" parameterType="java.lang.String" resultType="java.util.LinkedHashMap">
    ${value}
  </select>

    <insert id="insert" parameterType="java.lang.String">
    ${value}
  </insert>

    <update id="update" parameterType="java.lang.String">
    ${value}
  </update>

    <delete id="delete" parameterType="java.lang.String">
    ${value}
  </delete>
</mapper>

然后新建接口SqlMapper

public interface SysMapper{
    List<LinkedHashMap<String, Object>> select(String sql);
    int insert(String sql);
    int update(String sql);
    int delete(String sql);
}

再新建个接口SqlService

public interface SqlService {

    String getSingle(String sql);

    List<LinkedHashMap<String, Object>> query(String sql);

    LinkedHashMap<String, Object> getOne(String sql);

    boolean execute(String sql);

    boolean executeBatch(List<String> sql);
}

最后是实现这个SqlService接口

@Service("SqlService")
public class SqlServiceImpl implements SqlService {
    @Autowired
    SqlMapper sqlMapper;

    @Override
    public String getSingle(String sql) {
        var selectResult = sqlMapper.select(sql);
        if (selectResult.isEmpty())
            return "";
        else {
            return selectResult.get(0).values().iterator().next().toString();
        }
    }

    @Override
    public LinkedHashMap<String, Object> getOne(String sql) {
        return sqlMapper.select(sql).get(0);
    }

    @Override
    public List<LinkedHashMap<String, Object>> query(String sql) {
        return sqlMapper.select(sql);
    }

    @Override
    public boolean execute(String sql) {
        try {
            sqlMapper.select(sql);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    @Override
    public boolean executeBatch(List<String> sql) {
        return this.execute(StringUtils.join(sql, ';'));
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇