Mybatis中注入执行sql查询、更新、新增及建表语句案例代码
作者:专注写bug 时间:2023-03-07 18:53:55
前言
在平时的项目开发中,mybatis应用非常广泛,但一般都是直接CRUD
类型sql的执行。
本片博客主要说明一个另类的操作,注入sql,并使用mybatis执行
。
案例
dao和mapper编写
三层架构中,dao层主要用于对数据库的操作。当项目配置好数据库的连接配置后,在dao层中可以编写如下的接口
。
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface CommonSqlMapper {
/**
* 根据注入的sql,新增数据
* @param sql
*/
void insertData(@Param(value = "sql") String sql);
/**
* 根据注入的sql,更新数据
* @param sql
* @return
*/
Integer updateData(@Param(value = "sql") String sql);
/**
* 依据条件,查询满足条件的所有数据集信息
* @param selectSql
* @return
*/
List<MakeUpDataPo> queryData(@Param(value = "selectSql") String selectSql);
}
XXXmapper.xml编写
编写一个与CommonSqlMapper.java
与之对应映射的CommonSqlMapper.xml
文件,其中可以对对应的方法,编写如下的sql:
<?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.xxx.xxx.CommonSqlMapper">
<!-- 修改 -->
<update id="updateData" >
${sql}
</update>
<!-- 新增 -->
<insert id="insertData">
${sql}
</insert>
<!-- 查询所有 -->
<select id="queryData" resultType="com.xxx.xxx.po.MakeUpDataPo">
${selectSql}
</select>
</mapper>
编写业务层代码,进行注入调用
@Service
public class TestService{
@Autowired
private CommonSqlMapper commonSqlMapper;
public void test(){
String sql = "select * from xj_test where name = 'xj'";
commonSqlMapper.queryData(sql);
}
}
额外扩展–创建表语句
如果想要使用mybatis
执行建表sql
,此时可以这么写:
/**
* 新增数据表
* @param tableName 表名称
* @param rowSql 表字段拼接sql
*/
void createTable(@Param(value = "tableName") String tableName,@Param(value = "rowSql") String rowSql);
对应的xxxx.xml
中,编写如下语句:
<!-- 创建表 -->
<insert id="createTable" statementType="STATEMENT">
create table ${tableName} (
id VARCHAR2(32) NOT NULL,
${rowSql},
PRIMARY KEY (id)
)
</insert>
【注意】
这里并不能直接进行 ${cresteTableSql} 的执行,必须写成上面的这种方式,否则将不能成功!
来源:https://blog.csdn.net/qq_38322527/article/details/128970507
标签:Mybatis,注入,sql,建表
0
投稿
猜你喜欢
可伸缩的textview详解(推荐)
2021-11-06 00:34:51
springboot应用访问zookeeper的流程
2021-11-28 00:34:56
C# TreeView无限目录树实现方法
2023-04-20 03:05:46
idea首次使用需要配置哪些东西
2022-05-16 20:01:37
Git工具 conflict冲突问题解决方案
2023-07-27 10:27:30
深入剖析构建JSON字符串的三种方式(推荐)
2023-09-26 07:47:22
Toast类避免显示时间叠加的方法
2021-08-20 02:01:42
android读取Assets图片资源保存到SD卡实例
2022-12-18 19:50:24
C#实现农历日历的方法
2022-08-17 21:27:29
jmeter+ant+jenkins自动化测试环境配置搭建过程
2023-11-17 23:38:06
Mybatis中的like模糊查询功能
2023-09-25 11:57:28
Idea springboot springCloud热加载热调试两种常用方式
2021-06-11 22:20:06
Apache SkyWalking 修复TTL timer 失效bug详解
2023-08-18 08:09:53
Android中的全局变量与局部变量使用小结
2023-12-07 10:11:49
MyBatisPlus3.x中使用代码生成器(全注释)
2022-04-06 19:34:38
Java泛型<T> T与T的使用方法详解
2021-07-12 10:58:42
深入理解Java注解类型(@Annotation)
2022-11-14 17:28:42
基于Android AIDL进程间通信接口使用介绍
2021-12-28 05:15:22
Android7.0 工具类:DiffUtil详解
2023-02-24 01:43:46
浅析SpringBoot2底层注解@Conditional@ImportResource
2023-08-01 23:35:51