美文网首页
你知道目前最流行的Mybatis框架吗?如何搭建呢?

你知道目前最流行的Mybatis框架吗?如何搭建呢?

作者: 一纸油伞 | 来源:发表于2020-12-16 14:21 被阅读0次

    你知道目前最流行的Mybatis框架吗?如何搭建呢?

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录

    mybatis不是一个完全的orm框架,Mybatis需要程序员自己写sql,但是也存在映射(输入参数映射,输出结果映射),学习门槛mybatis比hibernate低;同时灵活性高,特别适用于业务模型易变的项目,使用范围广

    简单概括:**更加简化jdbc代码,简化持久层,sql语句从代码中分离,利用反射,将表中数据与java bean 属性一一映射即ORM(Object Relational Mapping 对象关系映射) **

    使用范围:

    在日常的开发项目中,如中小型项目,例如ERP(Crm客户关系管理系统,OA系统),需求与关系模型相对固定建议使用Hibernate,对于需求不固定的项目,比如:互联网项目,建议使用mybatis,因为需要经常灵活去编写sql语句。总之,mybatis成为当下必须学习掌握的一个持久层框架。

    Mybatis框架搭建的方式

    新建Maven项目

    log4j 日志添加

    resources目录下配置文件添加

    映射文件添加

    实体类Customer添加

    在父类工程pom获取资源

    测试

    案例实操

    1.新建Maven项目

    **新建maven项目 ,pom文件添加依赖jar **

    <!-- mybatis jar 包依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><!-- 数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.39</version></dependency><!-- log4j日志打印 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency>

    2.log4j 日志添加

    在src/main/resources 资源包下添加log4j日志输出properties文件,便于查看日志输出信息

    # Global logging configuration

    log4j.rootLogger=DEBUG, stdout

    #Consoleoutput...

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    3.resources目录下配置文件添加

    新建mybatis.xml文件,并加入配置信息如下(数据库名mybatis,表 user)

    <?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><environmentsdefault="development"><environmentid="development"><!-- 加入事务控制 --><transactionManagertype="jdbc"/><!-- 配置数据库连接信息 --><dataSourcetype="pooled"><propertyname="driver"value="com.mysql.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://127.0.0.1:3306/spring-test"/><propertyname="username"value="root"/><propertyname="password"value=""/></dataSource></environment></environments><!-- mapper 配置文件指定 文件数量可配置多个--><mappers><mapperresource="com/xxx/mapper/CustomerMapper.xml"/></mappers></configuration>

    对于标签的配置可能不会出现自动提示:

    解决办法:引入mybatis-3-config.dtd 文件

    Window-preferences-搜索xml-xml catalog

    在User Specified Entries目录下 add->

    Locattion:http://mybatis.org/dtd/mybatis-3-mapper.dtd (值与xml模板中对应)

    Key Type:URI

    Key:-//mybatis.org//DTD Mapper 3.0//EN (值与xml模板中对应)

    第二步:

    关闭xml,重新打开,如果重新打开不可以,重启Eclipse即可。

    最后点击确定即可

    4.映射文件添加

    新建CustomerMapper.xml配置文件

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper

      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

      "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--

      1.命名空间配置  全局唯一  包名+文件名

      2.配置Mapped Statement

      3. statement配置

          id 值声明statement编号  同一命名空间(同一文件)下不可重复

          parameterType  输入参数即占位符的数据类型  类型可以是 基本数据类型,字符串,java bean ,map,list等

          resultType    输出结果  类型可以是基本数据类型,字符串,java bean,map等

          statement 描述 即待执行的sql 

          #{id}  占位符  变量名为id/value 均可  ${value}  变量名必须为value 字符串拼接形式  无法避免sql 注入   

    --><mappernamespace="com.xxx.mapper.customerMapper"><!-- 查询客户--><selectid="queryCustomerById"parameterType="int"resultType="com.xxx.pojo.Customer">SELECT id,user_name 'userName',user_balance 'userBalance' FROM  yg_customer WHERE  id=#{id}</select></mapper>

    5.实体类Customer添加

    packagecom.xxx.pojo;publicclassCustomer{privateintid;privateString userName;privateString userBalance;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(String userName){this.userName=userName;}publicStringgetUserBalance(){returnuserBalance;}publicvoidsetUserBalance(String userBalance){this.userBalance=userBalance;}@OverridepublicStringtoString(){return"Customer{"+"id="+id+", userName='"+userName+'\''+", userBalance='"+userBalance+'\''+'}';}}

    6.在父类工程pom获取资源

    <build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource></resources></build>

    7.测试

    @Testpublicvoidtest()throwsIOException{/**     

        a)、读取mybatis的配置文件   

        b)、加载配置文件创建SqlSessionFactory   

        c)、根据SqlSessionFactory创建SqlSession 

        d)、通过sqlSession操作数据库     

        e)、处理结果   

        f)、关闭session 

        *//**   

        * 加载配置到内存

        */InputStream is=Resources.getResourceAsStream("mybatis.xml");/** 

        *  创建SqlSessionFactory 对象  hibernate 也是如此 必须先获取SqlSessionFactory 实例化对象      */SqlSessionFactory factory=newSqlSessionFactoryBuilder().build(is);/**   

        *  获取session以便操作数据库 

        *  参数一:指定UserMapper.xml 映射文件id  必须加入命名空间   

        *  参数二: 指定输入参数   

        */SqlSession session=factory.openSession();Customer customer=session.selectOne("com.xxx.mapper.customerMapper.queryCustomerById",2);/**   

        * 将返回的结果输出   

        */System.out.println(customer);/** 

        * 操作完数据库 关闭session   

        */session.close();}

    扩展

    MyBatis 框架体系结构

    说明:

    1 Configuration-mybatis配置

    1)、与spring 一样,可以通过配置文件或注解的形式进行配置;

    2)、mybatis.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息;

    3)、mapper文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在mybatis.xml中加载

    4)、有了配置文件后,通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

    5)、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行

    6)、sqlSession使用Executor(数据库操作执行器接口)操作数据库,同Executor 具体实现类实现指定dao 层数据访问操作。

    2 Mapped Statement

    框架底层封装对象(sql语句、输入参数、输出结果类型),它包装了mybatis配置信息及sql映射信息等,mapper文件(即Mapper.xml)中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

    3 Sql的输入映射参数

    基本和简单类型、HashMap、自定义POJO等。输入参数映射就是jdbc编程中对preparedStatement设置参数,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中。

    4 Sql的输出映射参数

    基本和简单类型、HashMap、自定义POJO。 Statement对sql执行输出结果进行定义,输出结果映射过程相当于jdbc编程中对结果的解析处理过程,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中。

    3 Sql的输入映射参数

    基本和简单类型、HashMap、自定义POJO等。输入参数映射就是jdbc编程中对preparedStatement设置参数,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中。

    4 Sql的输出映射参数

    基本和简单类型、HashMap、自定义POJO。 Statement对sql执行输出结果进行定义,输出结果映射过程相当于jdbc编程中对结果的解析处理过程,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中。

    这里使用Maven 工程,对应的mybatis jar包下载通过maven 仓库统一管理下载。

    相关文章

      网友评论

          本文标题:你知道目前最流行的Mybatis框架吗?如何搭建呢?

          本文链接:https://www.haomeiwen.com/subject/geungktx.html