您的位置:首页 > 其它

Web框架梳理:第三章:Mybatis入门、Mybatis代理开发、log4j:日志管理工具

2016-12-14 15:20 691 查看
Mybatis:
  操作数据库 ORM框架(配置映射 输入参数
输出参数映射)
  编写sql语句,sql语句----方法映射

1.Mapper代理开发:(*****)
  interface  DeptMapper{

public List<Dept> findAll();

public Dept findById(int id);
  }
 
  Mapper代理本质就是一个接口,符合一定规则就会自动生成
 代理接口的实现类.
 
 
 符合以下四个要求:
    namespace==DeptMapper的路径
    Mapper代理接口的方法名与映射文件id保持一致,
    Mapper代理接口中方法的参数与映射文件parameterType一致
    Mapper代理接口中方法的返回结果与映射文件resultType一致
Mybatis就会自动生成 DeptMapper的实现类.
 
 主键自增:
   <insert  useGeneratedKeys="true"  keyProperty="主键字段对象的属性"   >
 
 
拼接sql:  sql注入 
      
    ${value}:如果parameterType是普通类型,${}中必须用value.
 
只查询部分字段:
   1)如果字段和属性一致   resultType映射为对象类型.
   2)如果字段和属性一致    resultType也可以映射为HashMap类型
 
 
查询的时候字段与属性名不一致:
  resultMap中定义那个字段与那个属性对应.
  eg:
    <resultMap id="唯一标识mymap1"  type="">

   <idcolumn="_dno" property="dno">

   <resultcolumn="_dname" property="dname">
  
  
   <resultMap id="唯一标识mymap2"  type=""extends="mymap1">

 
 当有一个resultMap的多个值和别的resultMap重复的时候,
 可以用extends继承别的resultMap.
  
  
  
2.Mybatis实现分页:(*****)
  1)将分页的相关数据封装成一个对象Page类型
  2)<selectparameterType="Page">
     select * from dept limit .......;

 
3.动态sql(*****):
   if标签: 参考jstl标签    
ognl
   <if test="condition!=null">
                           <iftest="condition.dname!=null and condition.dname!=''">
                                   and  dname  like #{condition.dname}

 <if>
    </if>

 

 <choose>
              <whentest="condition.dname!=null and condition.dname!=''">
                      anddname like #{condition.dname}
              </when>
       <when test="condition.loc!=nulland condition.loc!=''">
                      andloc like #{condition.loc}
       </when>
       <otherwise>
       </otherwise>
     </choose>
 
<foreach  collection="list"  open="("separator="," item="no" close=")"> 
 
 

 
4.sql片段(*****):
  <sql id="">
     sql片段内容

 
 需要sql片段的地方:
   <include refid="sql片段的id">
 
5.多表查询下的mybatis配置(*****):
  一对一:
     resultType:
   在主查询的对应类中扩展别的属性,
  一般适用于清单输出(账单,话费清单等)
     resultMap:
  将关联字段的值用一个对象封装.

  
    <association property="属性名" javaType="属性的类型">

     <id />

     <result/>

 
  一对多:
     dept----emp:
思路:
       Dept:

     dno;

 dname;

 loc

 List<Emp> emps;

    Emp:
          empno;

  ename;

  ....

 

 <resultMaptype="Dept" id="mymap2">

    <idcolumn="dno" property="dno">

    <resultcolumn="dname" property="dname">

    <resultcolumn="loc" property="loc">

    <collectionproperty="emps" ofType="Emp">

<id column="empno" property="empno"/>

<result column="ename" property="ename">

.....

</collection>
 

1.log4j:日志管理工具
  控制台(文件)输出信息   跟踪调试
 
log4j.jar. 
  输出日志的5个等级:
 debug  info warn  erorr  fatal(严重错误)
       layout: 日志的布局
        SimpleLayout
        HTMLLayout
       PatternLayout                
  日志的显示位置:
     ConsoleAppender

 FileAppender
指定一个级别(debug),改级别以上信息都会显示出来.
        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: