SSM(一)Mybatis基础
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基础的更多相关文章
- Java基础-SSM之mybatis的统计函数和分页查询
Java基础-SSM之mybatis的统计函数和分页查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-SSM之mybatis一对一关联
Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbands和wifes表并建 ...
- Java基础-SSM之mybatis多对多关联
Java基础-SSM之mybatis多对多关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建teas,stus,links表 u ...
- Java基础-SSM之mybatis一对多和多对一关系映射
Java基础-SSM之mybatis一对多和多对一关系映射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建customers表: ...
- Java基础-SSM之mybatis的树形控件(自关联)
Java基础-SSM之mybatis的树形控件(自关联) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建areas表: use y ...
- Java基础-SSM之mybatis一对一外键关联
Java基础-SSM之mybatis一对一外键关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbandsfk和wife ...
- Java基础-SSM之mybatis快速入门篇
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
- SSM之Mybatis整合及使用
SSM 在ss基础上加进行整合Mybatis(applicationContext.xml中添加配置),并添加分页拦截器(添加mybatis分页拦截器),并用generator动态生成到层. 构建基础 ...
- myBatis 基础测试 表关联关系配置 集合 测试
myBatis 基础测试 表关联关系配置 集合 测试 测试myelipse项目源码 sql 下载 http://download.csdn.net/detail/liangrui1988/599388 ...
随机推荐
- Python算法(含源代码下载)
关键字:Python Algorithms Python算法 Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...
- 第四十天 阿乐在其中—Android小游戏的飞机(四)加入敌人
8月9日,晴. "江城如画里,山晓望晴空. 雨水夹明镜.双桥落彩虹. 人烟寒橘柚,秋色老梧桐." 上篇已经让飞机载入子弹和音效及背景音乐,本篇主要加入敌机. 本篇要用到的几个函数解 ...
- 傻瓜突破linux--rootpassword
破password该方法: 方法1.单用户模式改动 (表示进入到单用户模式) ,按回车键,按b键启动.进入单用户模式.进行password改动,重新启动 init 5 口诀:e2e 空格1 回车b 开 ...
- 短暂聊天VS温馨提示
介绍 作为一个合作格该程序猿,使用的开发工具的熟练使用是我们必须掌握的. 而作为一名优秀的程序猿.我们不仅要能熟练的使用.并且还要去高效的使用. 而作为.Net平台专门定制的开发工具VS那当然是我们必 ...
- 关于禅道提示未安装VC++环境的问题(做个记录)
明明安装了VC++环境,总是提示未安装,这个问题有可能是你的mysql或其他服务开启影响的,关闭服务就可以了! 我这边是这个问题,把mysql和其他一些服务停止就好了.
- C#调用JS
cmd调用phantomjs 官方资料:http://phantomjs.org/quick-start.html 手动执行 从官方下载phantomjs.exe,拷贝它与要执行的js同目录打开cmd ...
- MIS的趋势必定是围绕机器取代人手,分工越来越细(小餐厅都支持微信自助点餐,结账时就打个折,相当于省了1、2个人手,SQL发明以后,程序员的工作更多了)
最后,我还想简略的谈谈MIS及MIS快速开发工具的未来. MIS的趋势必定是围绕机器取代人手,分工越来越细.比如:现在有些小型的咖啡厅里的财务子系统就简单到不需要使用者有会计知识,相当于省了会计人手: ...
- html常用
常用标签 <head></head> <body></body> <script></script> <a>< ...
- 解压压缩文件报错gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now
压缩包是直接weget 后面加官网上的tar包地址获取的 [root@xuegod43 ~]# tar -zxvf /home/hadoop/hadoop-2.6.5-src.tar.gz gzip ...
- 静态资源(StaticResource)和动态资源(DynamicResource)
一.文章概述 本演示介绍了WPF的静态资源和动态资源的基本使用,并对两者做了简单的比较. 二.定义并使用资源 <Window x:Class="Demo010.MainWindow&q ...