1.持久化与ORM

持久化是数据在内存与硬盘间相互转化的过程

ORM即对象关系映射

程序员使用面向对象的思维方式处理数据,每个对象都是一个pojo。但是保存数据的时候,却以关系型数据库的方式存储。所以在持久化的过程中编码会很复杂,比如jdbc的存取数据——要自己拆分每个字段,然后存入数据库,或者从数据库拿到ResultSet然后转变成泛型。

而对象关系映射使得程序变得简单了。通过xml配置,发条sql就能拿到pojo泛型,或者给个对象就能存入数据库。

2.mybatis基本构成

SqlSessionFactoryBuilder(构建器):生成SqlSessionFactory(工厂接口)

SqlSessionFactory:生成SqlSession(会话)

SqlSession:可以直接发送SQL并返回结果,也可以获取Mapper的接口

SQLMapper:由Java接口和XML文件(或注解)组成,负责发送SQL执行并返回结果

3.mybatis大配置

 <?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>
<!--引入 jdbc.properties-->
<properties resource="jdbc.properties"/>
<settings>
<setting name="logImpl" value="LOG4J"/>
<!--<setting name="lazyLoadingEnabled" value="true"/>-->
<!--<setting name="aggressiveLazyLoading" value="false"/>-->
<!--<setting name="autoMappingBehavior" value="NONE"/>-->
</settings>
<!--别名-->
<typeAliases>
<package name="cn.sohappy.bean"/>
</typeAliases>
<!--DB connection info,配置mybatis多套运行环境-->
<environments default="development">
<environment id="development">
<!--采用jdbc事务管理,JDBC,MANAGED,自定义-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--大配置关联小配置-->
<mappers>
<mapper resource="cn/sohappy/dao/IUserDAO.xml"/>
<!--<package name="cn.happy.dao"/>-->
</mappers>
</configuration>

开始一个简单的例子,感受一下mybatis的便捷。

接口:

 package cn.sohappy.dao;

 import cn.sohappy.bean.Smbms_user;

 public interface IUserDAO {
Smbms_user isLogin(Smbms_user user);
}

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">
<mapper namespace="cn.sohappy.dao.IUserDAO">
<select id="isLogin" resultType="bean_user">
select * from smbms_user where userCode=#{usercode} and userPassword=#{userpassword}
</select>
</mapper>

调用:

 @Test
public void test01(){
SqlSession session = MyBatisUtil.getSession();
try{
cn.sohappy.dao.IUserDAO mapper = session.getMapper(IUserDAO.class);
System.out.println(mapper.isLogin(new Smbms_user()));
}finally {
session.close();
}
}

4.生命周期

SqlSessionFactoryBuilder(构建器):用过即丢,只要创建了SqlSessionFactory,SqlSessionFactoryBuilder就失去了价值,将被回收。

SqlSessionFactory:创建SqlSession,所以该对象存在于Mybatis整个生命周期中。每次创建SqlSessionFactory都会打开数据库连接资源(Connection),为了避免数据库连接资源消耗殆尽,SqlSessionFactory是单例的。

SqlSession:SqlSession是一个线程不安全的对象。其生命周期存在于请求数据库处理事物的过程中,随着session.close()而结束。每个SqlSession都会占用数据库连接池的活动资源,所以事物处理完毕后应该即使关闭session。

Mapper:Mapper是一个接口,没有实现类。只能调用接口的方法,作用是发送SQL并返回结果或者更新数据库数据。存在于某个sqlSession事物方法之内,是方法级别的。  

SSM(一)Mybatis基础的更多相关文章

  1. Java基础-SSM之mybatis的统计函数和分页查询

    Java基础-SSM之mybatis的统计函数和分页查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  2. Java基础-SSM之mybatis一对一关联

    Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建husbands和wifes表并建 ...

  3. Java基础-SSM之mybatis多对多关联

    Java基础-SSM之mybatis多对多关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建teas,stus,links表 u ...

  4. Java基础-SSM之mybatis一对多和多对一关系映射

    Java基础-SSM之mybatis一对多和多对一关系映射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建customers表: ...

  5. Java基础-SSM之mybatis的树形控件(自关联)

    Java基础-SSM之mybatis的树形控件(自关联) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建areas表: use y ...

  6. Java基础-SSM之mybatis一对一外键关联

    Java基础-SSM之mybatis一对一外键关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建husbandsfk和wife ...

  7. Java基础-SSM之mybatis快速入门篇

    Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...

  8. SSM之Mybatis整合及使用

    SSM 在ss基础上加进行整合Mybatis(applicationContext.xml中添加配置),并添加分页拦截器(添加mybatis分页拦截器),并用generator动态生成到层. 构建基础 ...

  9. myBatis 基础测试 表关联关系配置 集合 测试

    myBatis 基础测试 表关联关系配置 集合 测试 测试myelipse项目源码 sql 下载 http://download.csdn.net/detail/liangrui1988/599388 ...

随机推荐

  1. Extensible Access Control List Framework

    Methods, systems, and products for governing access to objects on a filesystem. In one general embod ...

  2. sql语句计算出每个月的天数

    原文:sql语句计算出每个月的天数   从当前月-11个月开始,到当前月为止,用一个sql语句计算出每个月的天数. SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-LEVEL+1 ...

  3. C#引用CefSharp并屏蔽鼠标右键和禁止拖动放置事件

    原文:C#引用CefSharp并屏蔽鼠标右键和禁止拖动放置事件 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013564470/article/ ...

  4. C#使用Selenium实现QQ空间数据抓取 登录QQ空间

    经@吃西瓜的星星提醒 首先我们介绍下Selenium Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  5. 微信红包功能(含示例demo)

    开通支付权限 登录微信公众平台管理后台,找到“微信支付”一栏,进行开通会跳转到“微信支付商户平台”,根据提示提交相关证明,完成支付权限的开通开通之后,“微信支付”一栏会显示相关信息,在“开发-接口权限 ...

  6. WPF LayoutTransform -改变布局

    LayoutTransform会影响布局,让grid显示分割线时候,可以看出 <Window x:Class="wpf180709.Window1" xmlns=" ...

  7. 最简单的IdentityServer实现——Api

    1.创建项目并添加引用 创建ASP.NET Core Web API项目IdentityServer.EasyDemo.Api   1   2 引用IdentityServer4.AccessToke ...

  8. SICP 1.11-1.13

    1.11 递归版本 (define (f n) (cond ((< n ) n) ()) (* (f (- n )) ) (* (f (- n )) ))))) 迭代版本 (define (f ...

  9. 待修 Bug

    # 乱码 ## 描述 环境:Tomcat 8 + Spring 4 + Spring Security. 问题描述: 在类 AbstractAnnotationConfigDispatcherServ ...

  10. TestDisk 数据恢复 重建分区表恢复文件-恢复diskpart clean

    source:http://www.cgsecurity.org/wiki/TestDisk_CN TestDisk 是一款开源软件,受GNU General Public License (GPL ...