MyBatis 框架详解 (一)

持久层框架:直接操作对象  将查询结果转换成对象集合   把对象保存到数据库  你不用写太多sql 语句(容易出错,不利于面向对象)

 MyBatis:是一个持久层的框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

                构建工厂模式  ,拿到数据源,拿到基本配置文件通过数据源拿到session (专门操作数据库)

 

引入jar包:

   1.要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。

   2.maven构建项目:将以下加到pom.xml中;

     

 

从 XML 中构建 SqlSessionFactory

      xml只是一种  获取SqlSessionFactory方式 ( SqlSesionFactoryy有好几个来源  xml/properties文件/Configuration实例);

    可以使用classpath路径下的资源文件进行配置,也可以使用文件流来得到路径;MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。

  

 

mybatis-config.xml配置文件

       mybatis核心配置(获取数据库连接的数据源+事务管理器--管理事务的)Configuration通过Resources的方式读取配置文件中信息(SqlSessionFactoryBuilder 中的方法可以new 一个Configuration 实例去加载配置文件的内容  后生成SqlSessionFactory)

<?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>
    <typeAliases>
        <typeAlias alias="student" type="com.spring.entry.Student" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1/test" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!--所有的映射注册-->
    <mappers>
        <mapper resource="com/spring/mybatis/StudentMapper.xml" />
        <mapper class="com.spring.mybatis.TeacherMapper"/>
    </mappers>
</configuration>

 

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

 

不使用 XML 构建 SqlSessionFactory

   直接用Java程序创建Configuration实例  Configuration添加了映射器类 (mappercalss) 含 SQL 映射语句的注解从而避免了 XML 文件的依赖(xml里面存sql  所有的sql语句都可以在xml); new 事务管理器

    

 

从 SqlSessionFactory 中获取 SqlSession:

         SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句; opensession相当于打开了一个连接;

   通过session的方法 相当于直接拿到了一个实体对象(没有任何封装)  

    

 

对于给定语句能够合理描述参数和返回值的接口(比如说StudentMapper.class)---你可以自定义session的方法(selectstudentmapper)  利用接口的方式进行可封装;

  

 

     sql查出结果跟你的实体进行匹配<mapper namespace=""> 通过id (方法名)调用sql   返回一个对象类型

 

 

使用指定的完全限定名“org.mybatis.example.BlogMapper.selectBlog”来调用映射语句命名空间唯一;这个命名可以直接映射到在命名空间中同名的 Mapper 类,并将已映射的 select 语句中的名字、参数和返回类型匹配成方法;

 利用命名空间直接调用  实体类.calss

BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);

 

映射类:用注解替换xml形式(第三种)

     映射器是一个你创建来绑定你映射的语句的接口(StudentMapper)。

    映射器实例(Mapper Instances):从 SqlSession 中获得的,任何映射器实例的最大作用域是和请求它们的 SqlSession 相同的,最好把映射器放在方法作用域(method scope)内;

 

     xml 对应了实体类  id即类中的方法 输出类型就是该类的类型 

     session(可操作mapper文件)                                              

     执行:session----->mapper(固定类) 【注解@/xml<....id>】------>mapper 去增删改查

 

映射器(mappers)

        告诉 MyBatis 到哪里去找映射文件,可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等.

         

Mapper XML 文件:

      MyBatis 的真正强大在于它的映射语句,由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的。

         

        

  

select:预处理方面优势‘??’  

       

标签内置属性

     

     

 

Result Maps(解决联合查询问题)

resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC 

ResultSets 数据提取代码中解放出来, 并在一些情形下允许你做一些 JDBC 不支持的事情

   

返回值为HashMap类型,HashMap 不是一个很好的领域模型你的程序更可能会使用 JavaBean 或 POJO(Plain Old Java Objects,普通 Java 对象)作为领域模型。 MyBatis 对两者都支持(对应到对象上)

解决字段名和属性名不匹配的问题

  1. 类别名:  

这些情况下,MyBatis 会在幕后自动创建一个 ResultMap,再基于属性名来映射列到 JavaBean 的属性上。如果列名和属性名没有精确匹配,可以在 SELECT 语句中对列使用别名(这是一个 基本的 SQL 特性)来匹配标签。比如:

<select id="selectUsers" resultType="User">
  select
    user_id             as "id",
    user_name           as "userName",
    hashed_password     as "hashedPassword"
  from some_table
  where id = #{id}
</select>

 

2.resultMap :解决列名不匹配的另外一种方式(对象里的对象  1:n关系)

 

动态 SQL

  1.判断(sql拼接的情况)true--拼接 false--不拼接

         

   2.遍历:

        

 

ps:mybatis框架功能强大,我们需要了解其内部原理,更好的运用它!

            mybatis官方文档http://www.mybatis.org/mybatis-3/zh/index.html

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值