Mybatis中注入执行sql查询、更新、新增及建表语句案例代码
专注写bug 人气:0前言
在平时的项目开发中,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} 的执行,必须写成上面的这种方式,否则将不能成功!
加载全部内容