美文网首页
MyBatis基本配置

MyBatis基本配置

作者: Mr_J316 | 来源:发表于2019-06-18 14:43 被阅读0次

    MyBatis简介

    ​ MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。2013年迁移到GitHub,目前由GitHub维护。

    ​ iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。它在实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现(相对于Hibernate)。相对于Hibernate,MyBatis性能好,响应速度快,已经成为互联网应用开发的首选。

    什么是ORM

    ORM(object/Relation Database-Mapping)提供了持久化类和数据表之间的映射关系。

    MyBatis基本配置

    1.创建MyBatis核心配置文件mybatis.xml

    <configuration>
        <!-- 加载资源文件 -->
        <properties resource="dbinfo.properties"></properties> 
        <!--配置实体类自定义别名 -->
        <typeAliases>
          <!--<typeAlias type="com.model.User" alias="User" />-->
          <!-- 指定自动扫描包路径,该包之下所有的类名,可以做为别名使用-->
          <package name="com.model"/>
        </typeAliases>
        <!--配置数据源-->
        <environments default="dataSource"> 
          <environment id="dataSource">
           <transactionManager type="jdbc"/>  
           <dataSource type="POOLED">
               <property name="driver" value="${driver}"/>
                    <property name="url" value="${url}"/>
               <property name="username" value="${username}"/>
               <property name="password" value="${password}"/>
           </dataSource>
          </environment> 
        </environments>
        <!--装载Dao映射文件-->
        <mappers>
          <mapper resource="com/dao/userDaoMapper.xml"/>
        </mappers>
    </configuration>
    

    2.创建Dao接口,编写Dao映射文件

    <mapper namespace="com.dao.UserDao">
        <select id="selectById" parameterType="String" resultType="User">
            SELECT * FROM USERS WHERE ID=#{id}
        </select>
        
        <select id="selectAll" resultType="User">
            SELECT * FROM USERS
        </select>
      
        <insert id="insert" parameterType="User">
            INSERT INTO USERS(ID,NAME,AGE) VALUES(#{id},#{name},${age})
        </insert>
    
        <update id="update" parameterType="User">
            UPDATE USERS SET NAME=#{name},AGE=${age} WHERE ID=#{id}
        </update>
    
        <delete id="delete" parameterType="String">
            DELETE FROM USERS WHERE ID=#{id}
        </delete>
    </mapper>
    

    #占位符与$占位符的区别:

    #将传入的数据当做字符串,会自动加上双引号。如:order by #{id},如果传入的值是111,那么解析成sql时的值为order by "111"。

    $将传入的数据直接插入在sql中。如:order by ${id},如果传入的值是111,那么解析成sql时的值为order by 111。
    可以使用${paramN}#{paramN}的方式引用多个参数,如${param1}#{param1}表示第1个参数、 ${param2}#{param2}表示第2个参数

    insert语句中可以引用序列

    insert into test values(序列名称.nextval,#{username},#{password})
    

    3.编写测试类,加载Dao映射文件执行操作

    SqlSession sqlSession = null;
    try {
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
            .build(Resources.getResourceAsReader("mybatis.xml"));
        sqlSession = sessionFactory.openSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        //执行增删改查
        sqlSession.commit(); // 提交事务
    } catch (Exception e) {
        e.printStackTrace();
        sqlSession.rollback();
    } finally {
        if (sqlSession != null) {
           sqlSession.close();
        }
    }
    

    查询返回Map

    <select id="selectByIdForMap" parameterType="String" resultType="map">
         SELECT * FROM USERS WHERE ID=#{id}
    </select> 
    <select id="selectAllForMap" resultType="map">
         SELECT * FROM USERS
    </select>
    

    注意:使用map类型时,查询结果直接封装为Map<String,Object>返回,key即查询字段名(注意大小写)

    使用sql标签定义sql代码片断

    <sql id="base_column_list" >
        ID,NAME,AGE
    </sql>
    
    <select id="selectById" parameterType="String" resultType="User">
        SELECT <include refid="base_column_list" /> FROM USERS WHERE ID=#{id}
    </select>
    

    使用sql标签传递参数

    <sql id="role_columns">
        #{prefix}.role_id,#{prefix}.role_name
    </sql>
    <select id="selectById" parameterType="String" resultType="Role">
        select 
        <include refid="role_columns"> 
            <property name="prefix" value="r" />
        </include>
        from t_role r where role_id = #{roleId}
    </select>
    

    相关文章

      网友评论

          本文标题:MyBatis基本配置

          本文链接:https://www.haomeiwen.com/subject/iijfqctx.html