文章目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

import org.apache.ibatis.mapping.*;
import org.apache.ibatis.scripting.LanguageDriver;
import org.apache.ibatis.scripting.xmltags.XMLLanguageDriver;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class TestService {
@Autowired
SqlSessionFactory sqlSessionFactory;

public List<Map<String, Object>> query(String sqlString,String id, Map<String,Object> param){
Configuration configuration=sqlSessionFactory.getConfiguration();
if(!configuration.hasStatement(id)){
LanguageDriver xmlLanguageDriver=new XMLLanguageDriver();
SqlSource sqlSource=xmlLanguageDriver.createSqlSource(configuration, sqlString, Map.class);
BoundSql boundSql=sqlSource.getBoundSql(param);
MappedStatement ms = new MappedStatement.Builder(configuration, id, sqlSource, SqlCommandType.SELECT)
.resultMaps(new ArrayList<ResultMap>() {
{
add(new ResultMap.Builder(configuration, "defaultResultMap", Map.class, new ArrayList<>(0)).build());
}
}).build();
configuration.addMappedStatement(ms);
}
SqlSession sqlSession= sqlSessionFactory.openSession();
List<Map<String, Object>> results=sqlSession.selectList(id,param);
sqlSession.close();
return results;
}

@PostConstruct
public void test(){
Map<String,Object> map = new HashMap<>();
map.put("id","11961ca784b94d4e90e86584224796d6");
String sql = "<script>select id,title from t_table WHERE 1=1\n"
+ " <if test=\"id!=null and id!=''\">\n"
+ " AND id= #{id}\n"
+ " </if></script>";
List<Map<String, Object>> list = query(sql,"test",map);
for(Map<String,Object> m : list){
System.out.println("item:" + m.get("title"));
}
}
}
文章目录