Mybaties第一天

1.入门

  导包

  在src目录下配置Mybaties全局配置文件,在帮助文档里复制。

  全局配置的几个常用属性

    properties:用于导入property文件

    TypeAliases :给指定的接口起别名 (子属性TypeAlias type="接全类名"  alias="别名")

          或者直接<package name=""/> 扫描所有的接口,别名为接口名或者接口名首字母小写(常用)

    Mapper :映射xml文件

         resource:指定接口所对应的xml文件(当前项目路径),接口和xml文件可以分开放

         class:指定对应的接口,接口和xml不可分开,且接口名与xml名必须一致

         <package name=""/>  扫描所有的接口和xml, 所以接口名与xml名必须一致(常用)

  配置sql的配置文件,在 帮助文档复制

    查询:<select id="与接口方法对应的方法名一致"   resultType="查询返回类型(可以是基本数据类型或者实体类的全类名)"  parameterType="入参   类型" >

      select * from book where bid=#{sds}//查询语句   parameterType="入参类型"  可写可不写

       resultType=""  select 语句必须写 

      </select>

    修改:

      <update id="update" parameterType="com.ujiuye.bean.Book" >
    update book set title=#{title},bprice=#{bprice},speak=#{speak} where bid=#{bid}

        //#{实体类的属性名} parameterType="入参类型"   可写可不写
      </update>

    添加:<insert id="insertBook" parameterType="com.ujiuye.bean.Book" useGenerateKeys=true,keyProperty=“pojo对象属性”>

        //sql  parameterType="入参类型"  可写可不写

        //useGenerateKeys=true,keyProperty=“pojo对象属性”  添加时获取添加对象的ID 

      </insert >

    删除:

    <delete id="DeleteBookById" >

      // parameterType="入参类型"  可写可不写
      delete from book where bid=#{id} and title=#{name}  
    </delete>

2.传递参数

    基本数据类型:

      可以根据下标:#{0},#{11}

      给参数起别名(@Param("别名")数据类型 参数名)  #{别名}  (常用)

    传递的参数是bean对象

      #{bean对象的属性值}(常用)

    参数是Map集合

      #{map 的键}

    参数是list

      #{list[下标]}

    参数是数组

      #{array[小标]}

    混合传递

      List<Bean对象>

        #{list[下标].bean对象的属性值}

      

3. #{} 和${}传参的区别

    #{}采用的是预编译占位符的方式,避免sql注入

    ${} 直接把值放到了对应的位置(传  数据库名 、模糊查询可以用)

4.SQL片段

  sql语句中重复的语句提取出来:

  <sql id="select">

    select * from book
  </sql>

  用法:<include refid="sql 的Id"></include> 

5.自定义结果类型

    <resultMap id="PersonMap" type="book">       //type:实体类对象的全类名或者别名

      <id property="bid" column="bid"/>      //id  数据库表的主键用的    property 实体类中的属性名  column 表中的列名  (防止实体类中的属性名与表中的列名不一致)
      <result property="title" column="title"/>    //result  普通列名
      <result property="bprice" column="bprice"/>
      <result property="speak" column="speak"/>
    </resultMap>

    如何引用:  

    <select id="FindAll" resultMap="resultMap的ID" >
      select * from book where bid=#{sds}
    </select>

6.Mybaties优势

  本身就有一个框架,除了基本的增删改查之外,还有缓存,延迟加载机制

  把sql语句与java代码分开

  支持动态sql

  可以直接把表映射到bean类上

  是一个半自动化的orm框架,手写sql

7.运用Mybaties

  String resource = "bean.xml";
  InputStream inputStream;
  try {

    //读取全局配置文件
    inputStream = Resources.getResourceAsStream(resource);

    //创建SqlSession工厂
    SqlSessionFactory sql = new SqlSessionFactoryBuilder().build(inputStream);

    //开启
    SqlSession session = sql.openSession();

    //获取接口代理类的映射文件
      BookMapper per = session.getMapper(BookMapper.class);

    /调用接口中的方法执行sql
      List<Book> book = per.selectByExample(be);
      System.out.println(book);

    //提交事务
      session.commit();

    //关闭工厂
      session.close();
       } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    }

  

    

    

   

      

 

   

posted @ 2019-12-25 17:00  final_static_boss  阅读(132)  评论(0)    收藏  举报