MyBatis 详细介绍

来源:互联网 发布:php连不上mysql数据库 编辑:程序博客网 时间:2024/05/19 22:02

JDBC 连接数据库存在的问题

  1. 硬编码的问题,对数据库的操作不够灵活,比如链接数据名,用户名 ,密码 都已经在在代码中被写死
  2. 经常的连接数据库 打开 关闭 对系统整体资源消耗大 造成浪费
  3. sql语句不够灵活,容易写错,遍历查询结构的时候也很麻烦 没有即使返回对象

MyBatis 介绍 架构设计原理

这里写图片描述

sqlMapConfig 数据库链接信息 以及连接池的方式 链接的数据库 用户名 密码 等
mapper.xml 数据库中表的映射 ,一张表对应一个mapper.xml , 是对数据库操作的封装
sqlSession 操作数据库一次会话 , 就是操作数据库对象

环境配置

提示 maven 库地址 http://mvnrepository.com/

1. 配置编译JDK 版本

  <build>    <plugins>    <!-- maven的编译插件,用于指定我们jdk的版本 -->          <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>1.8</source>                    <target>1.8</target>                    <encoding>UTF-8</encoding>                </configuration>            </plugin>    </plugins></build>

2. 添加依赖mysql , mybatis

<dependencies>    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.38</version>    </dependency>    <!-- mybatis的依赖包 -->    <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.2.7</version>    </dependency>

3. 日志包依赖

<dependency>        <groupId>org.bgee.log4jdbc-log4j2</groupId>        <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>        <version>1.16</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>1.7.13</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>        <version>1.7.5</version>    </dependency>  <!-- https://mvnrepository.com/artifact/log4j/log4j -->    <dependency>        <groupId>log4j</groupId>        <artifactId>log4j</artifactId>        <version>1.2.16</version>    </dependency>

4. 资源文件配置看下图

这里写图片描述

传统Dao的开发模式

接口代理的开发Dao

  1. mapper.xml 中的命名空间 必须是 我们接口全限定类名
  2. sql 语句中的id 必须要跟方法名一致
  3. mapper需要跟接口文件名一致 必须在同一个目录下面

注意事项

SqlMapConfig 配置文件其他内容

1. 别名 在SqlMapConfig.xml 中

  <!-- 别名  将对user全路径的引用简写为 user -->  <typeAliases  type = "com.ruirui.proxy.User" alias="user"></typeAliases>

2. 批量 通过包的路径 批量命名别名 不区分大小写

<typeAliases>        <!-- 通过使用typeAliases来命名我们的pojo对象-->        <!-- <typeAlias type="cn.itcast.pojo.User" alias="user"/> -->        <!-- 如果使用package的方式来命名我们的别名,只需要拷贝我们指定的包路径就行,然后就可以做我们的别名 -->        <!-- 使用package这种方式来命名别名,别名就是类名,而且不区分大小写 -->        <package name="cn.itcast.pojo"/>    </typeAliases>

3. Mappers映射器 扫描包路径下的所有mapper.xml 文件

  <!-- 通过mappers来指定加载我们对应的mapper文件 -->          <mappers>           <!--  <mapper resource="mapper.xml"/> -->           <!-- <mapper resource="mapper2.xml"/> -->          <!--  <mapper resource="userMapper3.xml"/> -->          <!-- 可以通过试用package的方式来指定我们所有的mapper文件的路径在哪里 -->          <!-- 如果使用package的方式来指定包路径来扫描我们所有的mapper文件,有两点地方要注意          第一点:我们mapper文件,一定要放到我们指定的位置 ,而且这个指定的位置一定要指定到我们的dao接口所在的包路径          第二点:我们的mapper文件的命名规范,mapper文件的命名一定要与我们接口的命名相同,只不过后缀不通-->           <package name="cn.itcast.mybatis.mapper3"/>          </mappers>

4. 应用外部配置文件 链接数据库

4.1 db.properties

#注意,配置文件中,不要随意打入空格等空字符串driver=com.mysql.jdbc.Driverurl=jdbc:mysql://192.168.52.250:3306/mybatis?characterEncoding=utf-8username=rootpassword=admin

4.2 SqlMapConfig.xml 文件内部 引用 db.properties这个文件 引用${ ..} 这种引用的方式 同时也注意覆盖问题

<!-- resource 表示读取外部的配置文件信息来作为我们的数据库连接信息     如果通过resource来指定我们外部的配置信息,那么我们外部的配置信息就会覆盖我们本地property当中的值。-->    <properties resource="db.properties">        <property name="driver" value="com.mysql.jdbc.Driversss"/>        <property name="url" value="${url}"/>        <property name="username" value="root"/>        <property name="password" value="admin"/>    </properties>    <!-- 这个environments定义了我们的数据库的连接操作 -->      <environments default="development" >        <environment id="development">          <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>
原创粉丝点击