MyBatis之配置文件与操作

一、MyBatis使用的两种方式:
第一种:方式是自动映射
第二种:使用XML方式

二、MyBatis操作:

1、使用Mapper文件方式
2、使用Mapper接口和注解方式
3、mapper文件与接口结合使用(推荐这种方法)

三、 MyBatis一共有两种配置文件,一个叫主配置文件(下文截图中的net-mybatis-conf.xml),一个是映射的配置文件(net-mybatis-mapper.xml),其中映射文件可以有多个。(文件名随意编写,但不能重复)

这里使用的是自动映射(自动映射的要求是类中的属性名与数据库中表的字段名或者select语句最后显示的名称要一致)

(一)、mapper文件与mapper接口结合使用:

  1、编写实体类,添加get和set方法、toString方法

  2、创建MyBatis操作的数据访问接口

#MyBatis的操作:

MyBatis操作的接口或类
SqlSession  ——接口
SqlSessionFactory  ——接口
SqlSessionFactoryBuilder  ——类

MyBatais是使用SqlSession类型的对象对数据库进行操作,而SqlSessin是一个接口,该接口类型的对象由SqlSessionFactory类型对象创建。
SqlSessionFactory也是一个接口,该接口类型的对象是由SqlSessionFactoryBuilder的build方法创建的。

注意:在创建SqlSessionFactory时,需要一个输入流对象,该输入流对象就是去读取一个MyBatis的配置文件,如图

  3、配置图上的net—mybatis-conf.xml,(MyBatis的配置文件是一个XML文件)

     MyBatis的配置文件主要配置数据库操作的环境及映射信息

4、配置MyBatis的映射文件

  主要用于关系模型与对象模型的映射  

  映射文件的根节点:mapper      其属性:namespace

  *  注意<mapper/>节点的namespace一定是接口类型的完全限定名

  mapper节点其详细的定义:(里面剩余节点下章会讲到)

   MyBatis操作的数据访问接口名:

  MyBatis映射文件:

  1、<select/>:查询     <insert/>:插入     <delete/>:删除      <update/>:更新   这四个是MyBatis映射文件中的<mapper>的操作子节点(这四个子节点的id属性要与数据接口类型的完全限定名)

  2、要执行的SQL语句,如果该语句有参数,使用#{参数名}结出。如果不给参数,就可以不要。

小插曲:看到这里有没有觉得 MyBatis映射文件中的<mapper>的操作子节点里面的增删改查这几个节点中的parameterType属性的文件名太长了,这里可以用<typeAliases>节点进行简化,如图:

1、在主配置文件中定义类型使用的别名:

2、下图是映射文件,这样就简单化了,测试出来的结果是一样的。

还有xml是约束性的文件,一定要注意匹配模式先后顺序进行编写(逗号分隔是有先后顺序的)如下图

5、把MyBatis的映射文件加载到MyBatis的配置文件中

 6、编写测试接口类,这里只测试一个查询,其余测试方法都是一样的。

结果:

注意:

接口与Mapper文件结合使用:
  1、Mapper文件中的<mapper/>节点的namespace一定是接口类型的完全限定名
  2、接口当中的方法名与<mapper/>中的子节点<操作节点>(select,delete,update,insert)节点的id值相同
  3、接口方法的参数,是要和Mapper文件操作节点的parameterType(parameterMap)内容要对应。

(二)、使用Mapper接口和注解方式

  在进行MyBatis操作时可以不要Mapper文件,操作的SQL语句,使用注解的方式给出。

示例:

  在接口中直接编写sql语句:

  把数据访问接口加载到MyBatis配置文件中(这里就不能用resource属性了,要用class属性),然后去测试这个接口,效果和mapper文件与接口结合是一样:

注意:这里说一下加载属性文件,下图是我的mysql数据库的jdbc url

在xml文件中配置jdbc url的时候,&这个符号是需要转义成amp; 也就是转成实体,如下:

jdbc:mysql://localhost:3306/netmarketdb?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false

但是如果是在文件中就不用这个实体也就是amp;,直接使用&符号连接即可; 示例如下:

 
在MyBatis配置文件中,用<properties/>中<property/>子节点加载属性文件及定义属性,然后用EL表达式的${ }符号获取属性文件中的值。

 

在这里有两种配置方法,也就是上述说描述的

1、直接在xml文件中配置连接数据库的四个基本信息。

2、在属性文件中写好连接数据库的四个基本信息,再到MyBatis的配置文件中加载属性文件,再用EL表达式去获取属性文件中的值。

原文地址:https://www.cnblogs.com/xss512/p/10843425.html