MyBatis学习

1 简介:

每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

 以上简介是MyBatis官方文档的介绍,我以这个为切入点,结合我们的项目,学习了解XML配置文件,SqlSessionFactory的获取,SqlSession的获取和使用。

 

2. 从XML中构建SqlSessionFactory(为后面的MyBatis-Spring打基础):

  String resource ="com/accp/mybatis/data/Configuration.xml";   

Reader reader =Resources.getResourceAsReader(resource);   

sqlMapper = new SqlSessionFactoryBuilder().build(reader);

那看看XML中配置了什么?

2.1 xml配置文件如下:

<configuration> 

    <properties resource="properties/datasource.properties" /> 

 

    <typeAliases> 

        <typeAlias type="com.accp.mybatis.model.Blog" alias="Blog"/> 

    </typeAliases>

 

    <environments default="accp">

        <environment id="accp"> 

            <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}" /> 

                <property name="driver.encoding" value="${encoding}" /> 

            </dataSource> 

        </environment> 

    </environments>

 

    <mappers> 

        <mapper resource="com/accp/mybatis/data/BlogMapper.xml" /> 

    </mappers> 

</configuration>

由此可知xml配置文件的核心设置,以及这样配置的作用:

    数据源:获取数据库实例

    事物管理器:决定事物的范围和控制

    mapper:告诉MyBatis 去哪寻找映射SQL 的语句。

typeAliases:配置Java对象的别名(Mapper配置需要使用)。

  Java中的JDBC执行步骤是:

C(Class.forName()),

C(Connection),

S(Statement) ,

R(ResultSet)。

结合JDBC,个人是这样理解这些配置的:

数据源是为了获取Connection(对应CC),

mapper以及transactionManager是为了执行SQL(对应S),

(具体的Mapper.xml文件中有SQL语句,Java对象与SQL返回类型的映射。MyBatis中SQL执行结果是Map<String,Object>,这样配置以后,MyBatis可以将执行结果转换为我们想要的Java对象。)

 

2.2 SqlSessionFactory

   一个environment对应一个SqlSessionFactory,SqlSessionFactory 应该在应用执行期间都存在,可以通过单例模式使其生命周期在一个应用范围内。

 

 

3. SqlSession

3.1 SqlSession的获取:从SqlSessionFactory获取SqlSession。

SqlSession session = sqlSessionFactory.openSession();

try {

  // do work

Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);

} finally {

  session.close();

}

  SqlSession介绍:

      Sqlsession对应着一次数据库会话,每次访问数据库时都需要创建它,会话结束后要关闭session。

3.2使用SqlSession执行SQL语句:

 3.2.1 只使用Map文件编程:

     SqlSession提供了许多方法供我们使用,在我们项目中常用的有如下方法:

  select(), selectOne(), insert(), update(),delete()。

     项目中使用这种方式,用法和以下这句Java是一样的:

  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);

  3.2.2 以接口方式编程:

   本项目中未用。

BlogMapper mapper = session.getMapper(BlogMapper.class);

Blog blog = mapper.selectBlog(101);

   原理和使用全名调用Java对象的方法是相似的,编写一个映射类,使用一个名称, 参数和返回值和已映射的查询 语句都一样的方法即可。

4.Mapper XML文件

  在Mapper XML文件中可以配置SQL语句和result映射,相比较JDBC,可以节省大量的代码量,而且又是以SQL语句为核心。我个人觉得这个是它强大处之一,顺便可以让我练习写SQL语句(Hibernate让我快遗忘掉SQL了)。

  结合我们项目:以下是文件中常用的元素:

sql – 可以重用的 SQL 块,也可以被其他语句引用。

insert  – 映射插入语句

update – 映射更新语句

delete – 映射删除语句

select – 映射查询语句

resultMap  – 将数据库结果集转换为你设置的对象

<![CDATA[ ]]> - 被包裹的内容会被解析器忽略(忽略特殊字符)

  动态SQL,在项目中没怎么用到,我就不写了,用到的时候可以查看官网:http://mybatis.github.io/mybatis-3/zh/dynamic-sql.html

 

5. 和Hibernate比较:

Hibernate和mybatis有一个共同点:

1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.

2. 由sessionfactory  产生 session

3. 在session 中完成对数据的增删改查和事务提交等.

4. 在用完之后关闭session 。

5. 都可以将查询的结果集映射为Java对象

我Hibernate用的不是很多,从个人使用和网上搜来的结果,简单总结了如下:

 Hibernate特点:

  1. 功能强大,DAO层开发简单

  2. 比较笨重,不方便优化

  MyBatis特点:

  1. 比较轻,可以细致优化SQL

  2. MyBatis容易掌握,而Hibernate门槛较高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值