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")); } } }
|