MyBatis 框架 1
来源:互联网 发布:linux 创建进程 编辑:程序博客网 时间:2024/05/04 01:48
1.什么是Mybatis
1.MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 2.iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO) 3.MyBatis是一个数据持久层(ORM)框架。把实体类和SQL语句之间建立了映射关系, 是一种半自动化的ORM实现。
下载地址:https://github.com/mybatis mybatis的jar包
2.MyBatis的优点
1. 基于SQL语法,简单易学。 2. 能了解底层组装过程。 3. SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度。(重点) 4. 程序调试方便。所有sql语句,全部定义在xml(建议)中。也可以通过注解的方式在接口上实现。这些映射文件称之为mapper。
3.与jdbc区别
1. 减少了61%的代码量 2. 最简单的持久化框架 3. 架构级性能增强 4. SQL代码从程序代码中彻底分离,可重用 5. 增强了项目中的分工 6. 增强了移植性
4.MyBatis工作流程
1. 加载配置并初始化:加载配置文件,将SQL的配置信息加载成为一个个MappedStatement对象 (包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。2. 接收调用请求:调用Mybatis提供的API,传入参数:SQL的ID和传入参数对象, 将请求传递给下层的请求处理层进行处理。3. 处理操作请求:API接口层传递请求过来,传入参数:为SQL的ID和传入参数对象,处理过程: 3.1根据SQL的ID查找对应的MappedStatement对象。 3.2根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行 传入参数。 3.3获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得 到执行结果。 3.4根据MappedStatement对象中的结果映射配置,对得到的执行结果进行转换处 理,并得到最终的处理结果。 3.5释放连接资源。 3.6返回处理结果将最终的处理结果返回。
5.操作流程
1.导入 mybatis的jar包 和 与数据库相对的驱动(oracle的为ojdbc6.jar)
2.全局配置文件
2.1SqlMapConfig.xml 全局配置文件
<?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> <properties resource="db.properties"></properties> <!-- 关联db配置文件 --> <environments default="development"> <!--可以在environments配置多个环境--> <environment id="development"> <!-- 事务管理:jdbc 与 managed--> <!-- jdbc:直接全部使用jdbc的提交回滚功能... --> <!-- managed: 什么都不做 不回滚 不提交 不关闭连接 而是交给窗口处理 托管--> <transactionManager type="JDBC" /> <dataSource type="POOLED"><!--POOLED(一般使用这个 带连接缓存池) UNPOOLED JNDI--> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="Mapper.xml" /> <!--关联文件可以多个 根据什么对象可以不同命名比如 EmpMapper.xml --> </mappers></configuration>
2.2 db.properties文件
driver=oracle.jdbc.driver.OracleDriverurl=jdbc\:oracle\:thin\:@localhost\:1521\:orclusername=scottpassword=123456
3.Mapper.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="UserInfo"> <select id="selectUser" parameterType="int" resultType="myBatisTest.UserInfo"> <!--resultType:输出结果映射成java对象类型 注意保证对象属性和列名一致--> <!--select 定义select语句同理 update....--> select * from userinfo where id = #{id} <!--#{}为占位符(语句的?) #{id}表示接收的参数名称是id 如果输入的是简单类型,参数可以任意可以为value或其他名称--> </select></mapper>
4.SqlSessionFactory、SqlSession接口
package myBatisTest;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class test { /*该功能一般做在Dao的实现层*/ public static void main(String[] args) throws IOException { /*获取SqlSessionFactory接口*/ InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is); /*获取SqlSessionFactory接口*/ SqlSession sqlsession = sf.openSession(); /*带参 查一条*/ /*参数从Mapper.xml获取UserInfo的selectUser 然后插入参数为141*/ UserInfo u= sqlsession.selectOne("UserInfo.selectUser",21); System.out.println(u); /*释放资源*/ sqlsession.close(); }}
5.对象UserInfo
package myBatisTest;public class UserInfo { int id; String userName; String password; String sex; String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public UserInfo() { super(); } public UserInfo(int id, String userName, String password, String sex, String email) { super(); this.id = id; this.userName = userName; this.password = password; this.sex = sex; this.email = email; } @Override public String toString() { return "UserInfo [id=" + id + ", userName=" + userName + ", password=" + password + ", sex=" + sex + ", email=" + email + "]"; }}
6.结果(数据库自行搭建)
UserInfo [id=21, userName=1234, password=1234, sex=男, eamil=null]
阅读全文
1 0
- mybatis框架(1)---mybatis入门
- MyBatis 框架 1
- MyBatis(1)框架原理
- mybatis框架
- MyBatis框架
- Mybatis框架
- Mybatis框架
- Mybatis框架
- MyBatis框架
- MyBatis框架
- Mybatis框架
- MyBatis框架
- Mybatis框架
- myBatis框架
- mybatis框架
- myBatis框架
- MyBatis框架
- MyBatis框架
- 企业如何选择仓库管理软件和进销存软件
- 尼克的任务
- android调用webservice复杂数据类型处理
- @rownum
- HDU 1054 Strategic Game (树形DP)
- MyBatis 框架 1
- 【微信开发学习笔记(二)】:上传图片后显示不了
- cors跨域ie9失败
- java基础编程(1):无缓存交换
- QQ第三方友盟分享
- 如何转换 CGCS2000坐标系
- RabbitMQ (三) 发布/订阅
- Java序列化和反序列化
- div+css布局:文字垂直居中