1. 程式人生 > >mybatis之動態SQL操作之查詢

mybatis之動態SQL操作之查詢

1)  查詢條件不確定,需要根據情況產生SQL語法,這種情況叫動態SQL

/**
 * 持久層
 * @author AdminTC
 */
public class StudentDao {
    /**
     * 動態SQL--查詢
     */
    public List<Student> dynaSQLwithSelect(String name,Double sal) throws Exception{
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        
try{ Map<String,Object> map = new LinkedHashMap<String, Object>(); map.put("pname",name); map.put("psal",sal); return sqlSession.selectList("mynamespace.dynaSQLwithSelect",map); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback();
throw e; }finally{ sqlSession.commit(); MyBatisUtil.closeSqlSession(); } } public static void main(String[] args) throws Exception{ StudentDao dao = new StudentDao(); List<Student> studentList1 = dao.dynaSQLwithSelect("哈哈",null
); for(Student student : studentList1){ System.out.println(student.getId()+":"+student.getName()+":"+student.getSal()); } System.out.println("--------------"); List<Student> studentList2 = dao.dynaSQLwithSelect(null,7000D); for(Student student : studentList2){ System.out.println(student.getId()+":"+student.getName()+":"+student.getSal()); } System.out.println("--------------"); List<Student> studentList3 = dao.dynaSQLwithSelect("哈哈",7000D); for(Student student : studentList3){ System.out.println(student.getId()+":"+student.getName()+":"+student.getSal()); } System.out.println("--------------"); List<Student> studentList4 = dao.dynaSQLwithSelect(null,null); for(Student student : studentList4){ System.out.println(student.getId()+":"+student.getName()+":"+student.getSal()); } System.out.println("--------------"); } }

    StudentMapper.xml

<?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="mynamespace">
    <select id="dynaSQLwithSelect" parameterType="map" resultType="loaderman.Student">
        select id,name,sal from students
        <where>
            <if test="pname!=null">
                and name=#{pname}
            </if>
            <if test="psal!=null">
                and sal=#{psal}
            </if>
        </where>     
    </select>
</mapper>