Mybatis 执行任意 SQL 字符串
直接上代码:
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* @Author: Jimmy
* @Date: 2022-02-15 11:35
* @Description: mybatis执行sql字符串
*/
@Repository
public interface SqlMapper {
/**
* mybatis执行sql字符串
*
* @param sql
* @return
*/
@Select({"${sql}"})
List<Map<String, Object>> executeSql(String sql);
}
调用:
import com.sinochem.api.mapper.SqlMapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import java.util.Map;
/**
* @Author: Jimmy
* @Date: 2021-08-27 17:25
* @Description: 测试类
*/
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class Test {
@Autowired
private SqlMapper sqlMapper;
@org.junit.Test
public void test1() {
List<Map<String, Object>> maps = sqlMapper.executeSql("select * from auth_config where delete_flag = 0");
System.out.println(maps);
}
}
测试结果:
存在注入风险,谨慎使用!!!