博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis原理简介和小试牛刀
阅读量:6515 次
发布时间:2019-06-24

本文共 3588 字,大约阅读时间需要 11 分钟。

在我看来mybatis的原理与hibernate在某些方面是一致的,先回顾一下Hibernate原理(原理主要上是要掌握并理解下列六个对象:

Hibernate中重要的六个对象:

Configuration:读取配置文件(主要指hibernate-config.xml)和启动hibernate

SessionFactory:负责初始化Hibernate

Session接口:负责持久化对象的CRUD的操作

Transaction:负责事务(opensession或getCurrentSession)

补充说明:

opensession和getCurrentSession的主要区别是:openSession 每一次获得的是一个全新的session对象,而getCurrentSession获得的是与当前线程绑定的session对象

Query接口和Criteria接口:负责执行各种数据库查询

MyBatis和Hibernate的共同点都是通过SqlSessionFactory创建Session,以此达到Session操作数据库的目的。

 

MyBatis小试牛刀步骤:

一、导包

导包:asm-3.3.1.jarcglib-2.2.2.jarcommons-logging-1.1.1.jarjavassist-3.17.1-GA.jarlog4j-1.2.17.jarlog4j-api-2.0-rc1.jarlog4j-core-2.0-rc1.jarmybatis-3.2.7.jarmysql-connector-java-5.1.7-bin.jarslf4j-api-1.7.5.jarslf4j-log4j12-1.7.5.jar其中mybatis-3.2.7.jarmysql-connector-java-5.1.7-bin.jar这两个是必须的缺一不可

二、写主配置文件:

 三、建立实体类

package com.blog.entity;public class User {       private Integer Id;    private String userName;    private String password;    public Integer getId() {        return Id;    }    public void setId(Integer id) {        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;    }    }

四、写Dao

package com.blog.dao;import java.io.FileNotFoundException;import java.io.FileReader;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class BaseDao {     //BaseDao的目的在于实现类通过继承该类而达到操作数据库的目的    public static SqlSessionFactory getSSF(){        String resource="D:\\eclipse_maven\\workspace\\MyBatis\\src\\mybatis.conf.xml";        FileReader fr;        try {            fr = new FileReader(resource);            SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(fr);                        return ssf;                } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();                    return null;        }                    }  //查的方面可以通过BaseDao调用它,增删改对数据库中的数据库有改动则不能使用它,    //即便使用了,也达不到相应的效果        public static SqlSession getSqlSession(){        return getSSF().openSession();                    }    //增删改需要它,凡是对数据库有改动的都需要提交事务,提交事务要将opensession设置为true,true为提交事务, 、  //opensession通常默认是false    public static SqlSession getSqlSession(boolean autoCommit){        return getSSF().openSession(autoCommit);                            }    }

五、写映射文件

//namespace:命名空间 //parameterType:参数类型 //resultMap:返回值类型

 六、写接口

package com.blog.dao;import com.blog.entity.User;public interface UserDao {	//查询	User selectById(Integer Id);			}

 七、写接口的实现类

package com.blog.dao.impl;import com.blog.dao.BaseDao;import com.blog.dao.UserDao;import com.blog.entity.User;public class UserDaoImpl extends BaseDao implements UserDao {         	@Override	public User selectById(Integer Id) {		/**            通过getSqlSession()调用增insert()、delete()、update()、selectOne()、            selectList()等方法,它们都有共同的两个参数,一个对应Mappper.xml文件中的nam           espace和id,一定要对应,否则会报错。                   */		return BaseDao.getSqlSession().selectOne("Mapper.selectById",Id);	}		public static void main(String[] args) {		User user=new UserDaoImpl().selectById(1);		System.out.println(user);					}		}

 八、运行实现类中的main方法(测试)

转载地址:http://kflfo.baihongyu.com/

你可能感兴趣的文章
js部分基础
查看>>
Docker 常用基础命令
查看>>
脏读,幻读,不可重复读解释和例子
查看>>
Tomcat指定(JDK路径)JAVA_HOME而不用环境变量
查看>>
Bluemix专属版本落地中国 开放物联网和认知计算能力
查看>>
汤姆大叔的6道javascript编程题题解
查看>>
【世界知名量子科学家加盟阿里】施尧耘出任阿里云量子技术首席科学家
查看>>
DataCore对外出售其虚拟化软件产品
查看>>
说说云计算与移动管理
查看>>
T-Mobile美国使用28GHz频段测试5G
查看>>
如何缓解影子云服务安全风险?
查看>>
Bossies 2016:最佳开源大数据工具
查看>>
银行卡信息安全事件频发 互联网站成数据泄露"重灾区"
查看>>
云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI弹性创建ECS实例
查看>>
象云2.0产品发布暨国产操作系统首次入驻公有云
查看>>
一个完美DCIM应该具备的功能与价值
查看>>
《SEO的艺术(原书第2版)》——1.5 人们如何搜索
查看>>
经验贴 | 电梯监控的布线技巧
查看>>
唐山联通与丰南区政府签署“智慧城市”战略合作协议
查看>>
研究显示:广告拦截应用正在破坏互联网
查看>>