本文爲博主辛苦總結,但願本身之後返回來看的時候理解更深入,也但願能夠起到幫助初學者的做用.
轉載請註明 出自 : luogg的博客園 謝謝配合!
之前的寫法:
<insert id="insert"parameterType="com.luogg.domain.Person">
java
在config.xml文件下
<!--起別名--> <typeAliases> <typeAlias type="com.luogg.domain.Person" alias="Person"/> </typeAliases>
在Mapper.xml文件下
<select id="selById" parameterType="int" resultType="Person"> SELECT * FROM person WHERE id = #{id} </select>
命名空間是能夠隨意修改的,可是有可能不一樣包下出現相同的實體類,因此仍是加上包名方便區分.
不少時候會寫一大串的列名,好比select 全部字段,咱們把常常出現的字段放入sql標籤中,未來直接引用
<!--sql片斷--> <sql id="cols">id,user_name,age,sex</sql> <select id="find" resultMap="personRM"> SELECT <include refid="cols"/> from person </select>
將parameterType設置成map便可
<where> 表示條件查詢,並在後邊自動添加一個1=1
<set>標籤,表示修改時候用的,自動刪除最後一個條件的逗號
<foreach>標籤,循環標籤,用於in子查詢
sql
<!--動態sql語句,where標籤至關於where 1=1 --> <select id="selDongtai" parameterType="map" resultMap="personRM"> SELECT <include refid="cols"/> FROM person <where> <if test="name != null">and user_name like #{name}</if> <if test="sex != null">and sex = #{sex}</if> </where> </select>
@Test //動態sql語句 public void selDongtai(){ SqlSession session = factory.openSession(); Map<String,Object> map = new HashMap<String, Object>(); map.put("name","l%"); map.put("sex",1); List<Person> list = session.selectList("com.luogg.mapper.PersonMapper.selDongtai",map); System.out.println(list.size()); for(Person p : list){ System.out.println(p); } }
遇到特殊字符,咱們須要將其原樣輸出,好比<>,此時加上<![CDATA[原樣輸出的內容 ]]>
<!--特殊字符的處理,查詢年齡在20到22歲的人員--> <select id="selTeshu" parameterType="map" resultMap="personRM"> SELECT <include refid="cols"/> FROM person <where> <if test="name != null">and user_name like #{name}</if> <if test="ageStart !=null"> and age >= #{ageStart}</if> <if test="ageEnd !=null"> <![CDATA[and age <=]]> #{ageEnd}</if> </where> </select>
@Test //特殊字符處理 public void testTeshu(){ SqlSession session = factory.openSession(); Map<String,Object> map = new HashMap<String, Object>(); map.put("ageStart",20); map.put("ageEnd",22); List<Person> list = session.selectList("com.luogg.mapper.PersonMapper.selTeshu",map); System.out.println(list.size()); for(Person p : list){ System.out.println(p); } }