前言
在平时的项目开发中,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 {
void insertData(@Param(value = "sql") String sql);
Integer updateData(@Param(value = "sql") String sql);
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
,此时可以这么写:
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} 的执行,必须写成上面的这种方式,否则将不能成功!
到此这篇关于Mybatis中注入执行sql查询、更新、新增以及建表语句的文章就介绍到这了,更多相关Mybatis中注入执行sql内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!