• Mybatis学习笔记一


      没有系统的学过mybatis,但之前的工作中用到过,与hibernate比起来个人更喜欢mybatis一点,因为感觉只要配置的映射关系对了sql写对了一半不会出错,就算出错感觉找bug比hibernate要来的容易,最近抽空系统的学习了一下mybatis,这里记录下我的学习笔记和感想,仅供备忘;

      一、简单介绍(mybatis是什么)

      mybatis是一个持久层的框架,让程序员将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足需要的sql语句。它有两种开发方式,一种是ibatis也支持的原始dao的开发,既编写dao接口和它的实现类,另一种是使用mapper代理的方法,只需编写mapper的接口和它的配置文件即可,此方法是ibatis不支持的,也是企业中常用的;

      二、一般开发步骤(使用mapper代理开发)

      1、创建mybatis的主配置文件,SqlMapConfig.xml,用于配置mybatis的运行环境、数据源、事务等,如下:

     1 <configuration>
     2     <!-- 加载属性文件 -->
     3     <!--properties中还可以配置一些属性名和属性值  -->
     4     <!-- <property name="jdbc.driver" value=""/> -->
     5     <properties resource="db.properties">
     6     </properties>
     7     <!-- 全局配置参数,需要时再设置 -->
     8     <!-- <settings></settings> -->
     9     <!-- 别名定义 -->
    10     <typeAliases>
    11         <!-- 批量别名定义 
    12         指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以)
    13         -->
    14         <package name="cn.itcast.mybatis.po"/>
    15     </typeAliases> 
    16     
    17     <!-- 和spring整合后 environments配置将废除-->
    18     <environments default="development">
    19         <environment id="development">
    20         <!-- 使用jdbc事务管理,事务控制由mybatis-->
    21             <transactionManager type="JDBC" />
    22         <!-- 数据库连接池,由mybatis管理-->
    23             <dataSource type="POOLED">
    24                 <property name="driver" value="${jdbc.driver}" />
    25                 <property name="url" value="${jdbc.url}" />
    26                 <property name="username" value="${jdbc.username}" />
    27                 <property name="password" value="${jdbc.password}" />
    28             </dataSource>
    29         </environment>
    30     </environments>
    31     
    32 </configuration>

      2、创建你需要操作数据库表的实体类

      3、通过mapper代理的方法开发dao

        3.1 编写mapper.xml(这里以根据id查询为例)

          

    <mapper namespace="cn.itcast.mybatis.mapper.UserMapper">
    
         <!-- 在 映射文件中配置很多sql语句 -->
        <!-- 需求:通过id查询用户表的记录 -->
        <!-- 通过 select执行数据库查询
        id:标识 映射文件中的 sql
        将sql语句封装到mappedStatement对象中,所以将id称为statement的id
        parameterType:指定输入 参数的类型,这里指定int型 
        #{}表示一个占位符号
        #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
        
        resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
         -->   
    
        <select id="findUserById" parameterType="int" resultType="user">
            SELECT * FROM USER WHERE id=#{value}
        </select>
        
    </mapper>

        3.2 编写mapper接口

          编写mapper接口需要遵循如下规范:

          3.2.1 在mapper.xml中namespace等于mapper接口地址

          3.2.2 mapper.java接口中的方法名和mapper.xml中statement的id一致

          3.2.3 mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。

          3.2.4 mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。

      4、在SqlMapConfig.xml中加载mapper.xml,可参考下面代码:

        

    <mappers>
            <mapper resource="sqlmap/User.xml"/>
            <!--通过resource方法一次加载一个映射文件 -->
            <!-- <mapper resource="mapper/UserMapper.xml"/> -->
            <!-- 通过mapper接口加载单个 映射文件
            遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
            上边规范的前提是:使用的是mapper代理方法
             -->
            <!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> -->
            
            <!-- 批量加载mapper
            指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
            遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
            上边规范的前提是:使用的是mapper代理方法
             -->
            <package name="cn.itcast.mybatis.mapper"/>
    
        </mappers>

      这样,mybatis的一个流程基本就走完了,然后就是写方法测试了,接下来的笔记来记录下mybatis的各个xml里的参数的意义及一些杂七杂八的备忘录!

          

          

          

  • 相关阅读:
    Soldier and Number Game素数筛
    HDU1501Zipper字符串的dfs
    HDU1285 确定比赛名次 拓扑排序模板题
    HDU1595 find the longest of the shortest dijkstra+记录路径
    HDU1556 Color the ball 前缀和/线段树/树状数组
    Function Run Fun递归+细节处理
    数学公式
    日常 java+雅思+训练题1
    HDU1423Greatest Common Increasing Subsequence
    HDU1595find the longest of the shortestdijkstra+记录路径
  • 原文地址:https://www.cnblogs.com/darling2047/p/6050743.html
Copyright © 2020-2023  润新知