MyBatis入门3_mapper.xml优化(parameterType简写_NameSpace简写_sql片段_特殊字符处理)_动态SQL
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.
转载请注明 出自 : luogg的博客园 谢谢配合!
优化
1.起别名(一般不用,写全方便查看类出处)
以前的写法:
<insert id="insert"parameterType="com.luogg.domain.Person">
在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>
2.命名空间的优化(一般不用,写全方便查看类出处)
命名空间是可以随意修改的,但是有可能不同包下出现相同的实体类,所以还是加上包名方便区分.
3.sql片段
很多时候会写一大串的列名,比如select 所有字段,我们把经常出现的字段放入sql标签中,将来直接引用
<!--sql片段-->
<sql id="cols">id,user_name,age,sex</sql>
<select id="find" resultMap="personRM">
SELECT <include refid="cols"/> from person
</select>
动态sql语句(根据用户填入条件查询,比如可以填入name搜索,也可以填入age搜索,也可以都填)
将parameterType设置成map即可
<where> 表示条件查询,并在后边自动添加一个1=1
<set>标签,表示修改时候用的,自动删除最后一个条件的逗号
<foreach>标签,循环标签,用于in子查询
<!--动态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
遇到特殊字符,我们需要将其原样输出,比如<>,此时加上<![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);
}
}