初识MyBatis

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>

------注意:MyBatis中核心配置文件的元素节点是有一定顺序的,若不按顺序排位,那么XML文件会报错。

创建实体类:

  

  如图所示: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);

  在对应的xml标签里可以用#{参数名}来引用参数如:delete  from provider where id=#{id}

原文地址:https://www.cnblogs.com/MyQuen/p/9197446.html