初识MyBatis

匿名 (未验证) 提交于 2019-12-02 21:53:52

MyBatis是一个半自动ORM框架,优势如下:

  1.不用考虑公共问题,框架帮我们完成。

  2.可以专心于业务逻辑,保证核心业务逻辑的开发质量

  3.结构统一,便与学习。

框架的概念:

  框架(Framework)是一个提供可重用的公共结构半成品。它为我们构建新的应用程序提供了极大的便利。

如何搭建MyBatis:

  1.下载需要的jar文件:(http://mybatis.org)

  2.将jar文件放到项目下面的lib文件夹中并部署(如没有lib文件夹可创建一个Folder)

  3.将MyBatis的核心配置文件放到源码文件夹中(source Folder)中,并进行配置

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>  <!--配置数据库连接-->     <properties resource="mybatis.properties" />     <settings>         <setting name="autoMappingBehavior" value="FULL"/>     </settings>     <typeAliases >         <package name="cn.bdqn.pojo"/>     </typeAliases>     <!-- 配置数据源,事务 -->     <environments default="deploy">         <environment id="deploy">             <!-- 事务:JDBC/MANAGED-自己管理去 -->             <transactionManager type="JDBC" />             <!-- 数据源:POOLED/UNPOOLED/JNDI -->             <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>        <mappers>         <mapper resource="cn/bdqn/dao/IinvitationMapper.xml" />         <mapper resource="cn/bdqn/dao/IReply_detailMapper.xml" />     </mappers> </configuration>

创建实体类:

  

  如图所示:cn.bdqn.pojo为实体类包

创建接口:

  如图:cn.bdqn.dao包下是实体类对应的接口和xml映射文件

配置数据库连接文件:MyBatis.properties

  如图resources源码文件夹中

在MyBatis中我们把sql语句放在每个实体类(接口)对应的xml文件中

MyBatis中有几个核心对象

  SqlSessionFactoryBuilder:用于创建SqlSessionFactory对象,通过build方法

  SqlSessionFactory:用于创建SqlSession对象没通过OpenSession()

  SqlSession:用于进行数据库的增删改查

  具体代码如图:(其中sqlMapCongif.xml就是我们配置的MyBatis核心配置文件)

  

MyBatis中的sql映射文件,前面提到过每个实体类会对应一个接口和一个xml文件。

  我们在编写xml映射文件时,通常以...Mapper命名,下面我们看一下xml中的配置

  如图:

  在xml中有增删改查所对应的标签

  <select id="对应接口中的方法名" parameterType="对应接口中的参数类型" resultType="对应接口中方法返回值类型">

  对应的sql语句

  </select>

  <insert></insert>,<update></update>,<delete></delete>这些标签都类似于<selec>

当我们新创建接口和对应的xml文件口要在MyBatis核心配置文件中的<mappers>标签下加上

  <mapper resource="新创建的xml文件地址,如:cn/bdqn/dao/IReply_detailMapper.xml" />

在写增删改查的时候,标签里还有一个属性:resultMap=“id名称”,这个标签的作用是,当实体类中有嵌套关系时,在MyBatis默认的映射关系下,当从数据库读取数据时

  不会自动映射实体类对应的表中没有的字段的值,列如:有时为了方便我们会在实体类中自己添加其他的属性,而对应的表中没有此地段,如果我们没有配置MyBatis的映射级别为FUll (全部自动映射)默认为Partial(只映射表中有的字段名)

接着编写对应id:

  <resultMap type="自定义属性的类型" id="上面自定义的id名">

  <result column="表中字段名" property="对应实体类中的属性名" /> 

当嵌套的是集合时:

    <collection property="嵌套的其他类的集合名" ofType="嵌套类的类型">

      <id column="sql语句中的主键id" property="表中对应的主键id" />(可以不写,如sql语句中没写)
      <result column="sql语句中查询列名" property="对应的属性" />
    </collection>

当嵌套的不是集合而是单个的对象时,用: 

    <association property="嵌套的对象名" javaType="嵌套对象类型">
      <id column="sql语句中的主键id" property="表中对应的主键id" />(可以不写,如sql语句中没写)
      <result column="sql语句中查询列名" property="对应的属性" />
    </association>

  </resultMap>

当需要带参方法是我们通常用Map,或者对象,或者javaBean的基本数据类型,

  单个传参通常在参数前加@param注解:如:public int DeleteProviderById(@Param("id") int id);

文章来源: 初识MyBatis
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!