mybatis学习笔记

来源:互联网 发布:计算机算法设计 网课 编辑:程序博客网 时间:2024/06/06 03:40
resultMap:当数据库字段和实体类成员变量不对应时需要用resultMap标签的id来实现对接,之前的resultType改为resultMap


resultType:当数据库字段和实体类成员变量对应时


parameterType:更新插入删除操作可以用来表示参数类型,传过来的参数是一个变量时parameterType可以省略且#{}作为一个占位符,{}中填任意值都可以,多个变量时需要用索引

update T_student set student_sex=#{s} where student_id='4'



select操作比较特殊由于其查询结果是几个属性值,所以必须要封装成对象才能返回,所以必须用resultType或者resultMap,不能够省略


#{}中可以放什么


1.参数对象的属性
 update T_student set student_sex=#{name},student_age=#{age} where student_id='2'
2.作为占位符时可以是任意内容
 update T_student set student_sex=#{xx} where student_id='2'


3.参数为map时且key的value值是一个变量时那么就可以直接放key


4.参数为map对象时,key所对应的value是一个object时,那么#{}放的值就是对象点变量


 update T_student set student_sex=#{stu.sex},student_age=#{stu.age} where student_id='2'


5.参数的索引
 update T_student set student_sex=#{0},student_age=#{1} where student_id='2'


6.

1.数据量太大时不能直接where 1=1  and 条件。。。。。
slect * from table where 1=1 and 条件  and 条件 
这样大量做1=1的判断会大大降低系统效率


应该采取下面此种方法
这里有几点需要说明,当但条件查询时前面的and会自动省略,多条件查询时
第一个满足条件的字段前面的and也会自动除去


 <select id="querystudentlist"  resultMap="result" >
      select * from T_student
         <include refid="condition"/>
    </select> 
   
   <sql id="condition">
      
       <where>
             <if test="name and ''!=name">
                  
                and student_name=#{name}
             
             </if>
             
            <if test="sex and ''!=sex">
                 
               and  student_sex=#{sex}
             
             </if>
             
              <if test="age and ''!=age">
                
               and  student_age=#{age}
             
             </if>
       
       
       </where>
    
   </sql>