Mybatis入门

  • Post author:
  • Post category:其他



目录


1.系统环境


2. mybatis


1.1介绍:


1.2mybatis与jdbc


1.3数据持久化


1.4SqlSessionFactory


3. 如何在项目中添加mybatis支持


3.1 使用maven创建项目,并添加web支持


3.2 添加相关依赖      junit 4.12      javax.servlet-api 4.0.0      mybatis 3.5.7      mysql-connector-java 5.1.44


3.3 下载 MybatisX 插件


3.4添加数据库配置文件&Mybatis核心配置文件(resources目录)   ​编辑


3.4.1:jdbc.properties


3.5 mybatis日志配置(log4j2)


本案例使用log4j2      3.5.1. 添加log4j2相关依赖,版本:2.9.1          log4j-core、log4j-api;          web工程需要包含log4j-web,非web工程不需要


3.5.2. 将log4j2.xml复制到resources目录下


3.5.3. 修改mybatis.cfg.xml文件的日志配置


3.5.4. web项目还需要修改web.xml文件添加日志开关


4. 使用MyBatis-generator自动生成MyBatis代码  逆向工程


5.1 MAVEN中使用 mybatis-generator-maven-plugin 插件(版本 1.3.7)


5.2 配置generatorConfig.xml


5.3 在Intellij IDEA添加一个“Run运行”选项,使用maven运行mybatis-generator-maven-plugin插件


6. 业务层代码编号(Biz/Service)


7. junit4单元测试   SqlSession.getMapper(BookMapper.class);   sqlSession.commit();//mybatis默认也是手动事务


8.开启驼峰命名自动映射(mybatis.cfg.xml文件)


1.系统环境


JDK版本:

1.8


IDE:InterliJ IDEA 2019.3.3或以上

Maven版本:3.6

MyBatis版本:3.X

数据库:

MySQL 5.7+

2. mybatis

1.1介绍:

mybatis本是apache的一个开源项目iBatis。

是一个 基于

Java的持久层框架(半自动)



持久层框架

就是

操作数据库的框架

,对之前的

JDBC

进行了

封装

ORM:Object Relational Mapping,简称ORM)模式是一种为了

解决面向对象与关系数据库存在的互补匹配的现象的技术

(将Java中的对象和数据库的表关联起来)理解为:

Java对象与数据库表的映射管理框架。

mybatis相当于将mapper中的入参和出餐结果集封装到Java的POJoQ类中,实际上Mybatis是半ORM,它鼓励开发者自己写sql,也正是因sql语句要自己写,所以

mybatis将Java对象和sql语句关联起来

,并没有将Java对象与数据库关联起来。

1.2mybatis与jdbc


MyBatis是支持普通的sql查询,存储过程和高级映射的秀秀持久层框架。


mybatis消除了几乎所有的JDBC的代码和参数的手工设置以及结果集的检索。


mybits使用简单的XML或者注解用于配置和原始映射。


将接口和Java的POJOs

(Plan Old Java Objects,普通的Java对象)

映射成数据库中记录

可以把mybatis看做成高级的JDBC,用于解决JDBC 的缺点:

1.自动注册驱动
2.自动创建jdbc中使用的Connection,Statement,ResultSet
3.制动执行失去了语句,得到ResultSet
4.自动处理ResultSet,把记录集中的数据转为Java 对象,同时还能Java对象放入List集合
5.自动关闭资源
6.自动实现s起来语句和Javadiamagnetic的解耦合

1.3数据持久化

数据持久化即使将程序的数据在持久状态的顺势状态转化的过程;

内存存储数据特点:断电即失

持久化方式:通过数据库(jdbc)或io文件持久数据

1.4SqlSessionFactory

每个mybatis引用的程序主要是都是使用

SqlSessionFactory

实例,一个

SqlSessionFactory

实列可以通过

SqlSessionBuilder

获得,

SqlSessionBuilder可以从一个xml配置文件或者一个预定义的配置类的实力获得

mybatis 半ORM框架,持久层框架
mybatis.xml 定义了没有mybatis的基本配置和连接数据库 的配置信息
SqlSessionFactoryBuilder 完成了mybati.xml配置文件的架子啊操作
SqlsessionFactoryBuilder SqlSessionFactroy实例

SqlSessionFactory
SqlSession‘
SqlSession 数据库层面的增删改查操作

3. 如何在项目中添加mybatis支持

3.1 使用maven创建项目,并添加web支持

3.2 添加相关依赖

junit 4.12

javax.servlet-api 4.0.0

mybatis 3.5.7

mysql-connector-java 5.1.44

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit-version>4.11</junit-version>
    <mysql-version>5.1.44</mysql-version>
    <javax-servlet-api-version>4.0.0</javax-servlet-api-version>
    <lombok-version>1.16.10</lombok-version>
    <mybatis-version>3.5.7</mybatis-version>
    <log4j-version>2.9.1</log4j-version>

  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit-version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql-version}</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis-version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${javax-servlet-api-version}</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok-version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j-version}</version>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>
   
    <!--<dependency>-->
    <!--  <groupId>org.mybatis.generator</groupId>-->
    <!--  <artifactId>mybatis-generator-maven-plugin</artifactId>-->
    <!--  <version>1.3.7</version>-->
    <!--</dependency>-->

  </dependencies>

3.3

下载 MybatisX 插件


3.4添加数据库配置文件&Mybatis核心配置文件(resources目录)


resources目录 下的的所有文件

3.4.1:jdbc.properties

可能遇到的问题:

解决方式:

http://t.csdn.cn/Pfm6l


3.5 mybatis日志配置(log4j2)

log for java

Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:

SLF4J

Apache Commons Logging

Log4j 2

Log4j

JDK logging

本案例使用log4j2

3.5.1. 添加log4j2相关依赖,版本:2.9.1


log4j-core

、log4j-api;

web工程需要包含log4j-web,非web工程不需要

3.5.2. 将log4j2.xml复制到resources目录下

3.5.3. 修改mybatis.cfg.xml文件的日志配置

<setting name=”logImpl” value=”LOG4J2″/>

3.5.4. web项目还需要修改web.xml文件添加日志开关

4. 使用MyBatis-generator自动生成MyBatis代码  逆向工程

   Xxx.java
   XxxMapper.java
   XxxMapper.xml


5.1 MAVEN中使用 mybatis-generator-maven-plugin 插件(版本 1.3.7)


因为IntelliJ中没有mybatis-generator对应的插件,所以需要在MAVEN中使用 mybatis-generator-maven-plugin插件来完成功能

添加mybatis-generator-maven-plugin插件相关依赖:mybatis-generator-maven-plugin

<plugin>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.3.7</version>
          <dependencies>
            <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.44</version>
            </dependency>
          </dependencies>
          <configuration>
            <overwrite>true</overwrite>
          </configuration>
</plugin>

5.2 配置generatorConfig.xml

resources下建generatorConfig.xml,作为mybatis-generator-maven-plugin插件的执行目标

5.3 在Intellij IDEA添加一个“Run运行”选项,使用maven运行mybatis-generator-maven-plugin插件


命令:mybatis-generator:generate -e


注意:

  注1:XxxMapper.xml中的ID要与XxxMapper.java接口中的方法一致  
  注2:XxxMapper.java接口的方法,均只能定义一个参数
  注3:使用Mybatis-generator时出现以下错误:“ Column name pattern can not be NULL or empty”
       错误产生的原因是因为使用了高版本的mysql驱动,请使用较低版本的mysql驱动
  注4:IDEA配置使用Mybatis出现 “Could not find resource”
       问题:在编译后的target文件夹下,发现只有mapper的class文件,而没有xml文件,
       将对应的xml文件放到这个文件夹下运行就不会出现下面的错误。说明出现这个错误的原因是maven编译时没有将xml文件放进去。
       解决方法:在pom.xml中添加如下代码
       <build>
        <resources>
          <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
          </resource>
        </resources>
       </build>
  注5:resource jdbc.properties does not exist
       问题:在编译后的target文件夹下,而没有jdbc.properties文件,但同时不能少了*.xml
       <resource>
          <directory>src/main/resources</directory>
          <includes>
            <include>jdbc.properties</include>
             <include>*.xml</include>     
          </includes>
       </resource>


6. 业务层代码编号(Biz/Service)

7. junit4单元测试

SqlSession.getMapper(BookMapper.class);

sqlSession.commit();//mybatis默认也是手动事务

8.开启驼峰命名自动映射(mybatis.cfg.xml文件)

<setting name=”mapUnderscoreToCamelCase” value=”true”/>

方式一:单独配置某个类
	            <typeAliases>
		       <typeAlias type="" alias="类别名"/>
	             </typeAliases>

	方式二:一次性配置某个包下的所有类(使用类的首字母小写的类名来作为类的别名)
	            <typeAliases>
		       <package name="包名" />
	             </typeAliases>



版权声明:本文为weixin_50624008原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。