mybatis学习笔记1.docx
- 文档编号:5284239
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:27
- 大小:23.71KB
mybatis学习笔记1.docx
《mybatis学习笔记1.docx》由会员分享,可在线阅读,更多相关《mybatis学习笔记1.docx(27页珍藏版)》请在冰豆网上搜索。
mybatis学习笔记1
第一章回顾jdbc开发
1)优点:
简单易学,上手快,非常灵活构建SQL,效率高
2)缺点:
代码繁琐,难以写出高质量的代码(例如:
资源的释放,SQL注入安全性等)
开发者既要写业务逻辑,又要写对象的创建和销毁,必须管底层具体数据库的语法
(例如:
分页)。
3)适合于超大批量数据的操作,速度快
第二章回顾hibernate单表开发
1)优点:
不用写SQL,完全以面向对象的方式设计和访问,不用管底层具体数据库的语法,(例如:
分页)便于理解。
2)缺点:
处理复杂业务时,灵活度差,复杂的HQL难写难理解,例如多表查询的HQL语句
3)适合于中小批量数据的操作,速度慢
第三章什么是mybatis,mybatis有什么特点
1)基于上述二种支持,我们需要在中间找到一个平衡点呢?
结合它们的优点,摒弃它们的缺点,
这就是myBatis,现今myBatis被广泛的企业所采用。
2)MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为MyBatis。
2013年11月迁移到Github。
3)iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
iBATIS提供的持久层框架包括SQLMaps和DataAccessObjects(DAO)
4)jdbc/dbutils/springdao,hibernate/springorm,mybaits同属于ORM解决方案之一
第四章mybatis快速入门
1)创建一个mybatis-day01这么一个javaweb工程或java工程
2)导入mybatis和mysql/oracle的jar包到/WEB-INF/lib目录下
3)创建students.sql表
--mysql语法
createtablestudents(
idint(5)primarykey,
namevarchar(10),
saldouble(8,2)
);
--oracle语法
createtablestudents(
idnumber(5)primarykey,
namevarchar2(10),
salnumber(8,2)
);
4)创建Student.java
/**
*学生
*@authorAdminTC
*/
publicclassStudent{
privateIntegerid;
privateStringname;
privateDoublesal;
publicStudent(){}
publicIntegergetId(){
returnid;
}
publicvoidsetId(Integerid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicDoublegetSal(){
returnsal;
}
publicvoidsetSal(Doublesal){
this.sal=sal;
}
}
5)在entity目录下创建StudentMapper.xml配置文件
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN"
"http:
//mybatis.org/dtd/mybatis-3-mapper.dtd">
insertintostudents(id,name,sal)values(1,'哈哈',7000)
insertintostudents(id,name,sal)values(#{id},#{name},#{sal})
6)在src目录下创建mybatis.xml配置文件
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN"
"http:
//mybatis.org/dtd/mybatis-3-config.dtd">
mysql: //127.0.0.1: 3306/mybatis"/> 7)在util目录下创建MyBatisUtil.java类,并测试与数据库是否能连接 /** *MyBatis工具类 *@authorAdminTC */ publicclassMyBatisUtil{ privatestaticThreadLocal privatestaticSqlSessionFactorysqlSessionFactory; static{ try{ Readerreader=Resources.getResourceAsReader("mybatis.xml"); sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader); }catch(IOExceptione){ e.printStackTrace(); thrownewRuntimeException(e); } } privateMyBatisUtil(){} publicstaticSqlSessiongetSqlSession(){ SqlSessionsqlSession=threadLocal.get(); if(sqlSession==null){ sqlSession=sqlSessionFactory.openSession(); threadLocal.set(sqlSession); } returnsqlSession; } publicstaticvoidcloseSqlSession(){ SqlSessionsqlSession=threadLocal.get(); if(sqlSession! =null){ sqlSession.close(); threadLocal.remove(); } } publicstaticvoidmain(String[]args){ Connectionconn=MyBatisUtil.getSqlSession().getConnection(); System.out.println(conn! =null? "连接成功": "连接失败"); } } 8)在dao目录下创建StudentDao.java类并测试 /** *持久层 *@authorAdminTC */ publicclassStudentDao{ /** *增加学生(无参) */ publicvoidadd1()throwsException{ SqlSessionsqlSession=MyBatisUtil.getSqlSession(); try{ sqlSession.insert("mynamespace.add1"); }catch(Exceptione){ e.printStackTrace(); sqlSession.rollback(); throwe; }finally{ sqlSmit(); } MyBatisUtil.closeSqlSession(); } /** *增加学生(有参) */ publicvoidadd2(Studentstudent)throwsException{ SqlSessionsqlSession=MyBatisUtil.getSqlSession(); try{ sqlSession.insert("mynamespace.add2",student); }catch(Exceptione){ e.printStackTrace(); sqlSession.rollback(); throwe; }finally{ sqlSmit(); } MyBatisUtil.closeSqlSession(); } publicstaticvoidmain(String[]args)throwsException{ StudentDaodao=newStudentDao(); dao.add1(); dao.add2(newStudent(2,"呵呵",8000D)); } } 第五章mybatis工作流程 1)通过Reader对象读取src目录下的mybatis.xml配置文件(该文本的位置和名字可任意) 2)通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象 3)从当前线程中获取SqlSession对象 4)事务开始,在mybatis中默认 5)通过SqlSession对象读取StudentMapper.xml映射文件中的操作编号,从而读取sql语句 6)事务提交,必写 7)关闭SqlSession对象,并且分开当前线程与SqlSession对象,让GC尽早回收 第六章mybatis配置文件祥解(mybatis.xml) 1)以下是StudentMapper.xml文件,提倡放在与实体同目录下,文件名任意 xmlversion="1.0"encoding="UTF-8"? > DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN" "http: //mybatis.org/dtd/mybatis-3-mapper.dtd"> insertintostudents(id,name,sal)values(1,'哈哈',7000) insertintostudents(id,name,sal)values(#{id},#{name},#{sal}) 第七章mybatis映射文件祥解(StudentMapper.xml) 1)以下是mybatis.xml文件,提倡放在src目录下,文件名任意 xmlversion="1.0"encoding="UTF-8"? > DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN" "http: //mybatis.org/dtd/mybatis-3-config.dtd"> mysql: //127.0.0.1: 3306/mybatis"/> 第八章MybatisUtil工具类的作用 1)在静态初始化块中加载mybatis配置文件和StudentMapper.xml文件一次 2)使用ThreadLocal对象让当前线程与SqlSession对象绑定在一起 3)获取当前线程中的SqlSession对象,如果没有的话,从SqlSessionFactory对象中获取SqlSession对象 4)获取当前线程中的SqlSession对象,再将其关闭,释放其占用的资源 /** *MyBatis工具类 *@authorAdminTC */ publicclassMyBatisUtil{ privatestaticThreadLocal privatestaticSqlSessionFactorysqlSessionFactory; static{ try{ Readerreader=Resources.getResourceAsReader("mybatis.xml"); sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader); }catch(IOExceptione){ e.printStackTrace(); thrownewRuntimeException(e); } } privateMyBatisUtil(){} publicstaticSqlSessiongetSqlSession(){ SqlSessionsqlSession=threadLocal.get(); if(sqlSession==null){ sqlSession=sqlSessionFactory.openSession(); threadLocal.set(sqlSession); } returnsqlSession; } publicstaticvoidcloseSqlSession(){ SqlSessionsqlSession=threadLocal.get(); if(sqlSession! =null){ sqlSession.close(); threadLocal.remove(); } } publicstaticvoidmain(String[]args){ Connectionconn=MyBatisUtil.getSqlSession().getConnection(); System.out.println(conn! =null? "连接成功": "连接失败"); } } 第九章基于MybatisUtil工具类,完成CURD操作 1)StudentDao.java /** *持久层 *@authorAdminTC */ publicclassStudentDao{ /** *增加学生 */ publicvoidadd(Studentstudent)throwsException{ SqlSessionsqlSession=MyBatisUtil.getSqlSession(); try{ sqlSession.insert("mynamespace.add",student); }catch(Exceptione){ e.printStackTrace(); sqlSession.rollback(); throwe; }finally{ sqlSmit(); MyBatisUtil.closeSqlSession(); } } /** *修改学生 */ publicvoidupdate(Studentstudent)throwsException{ SqlSessionsqlSession=MyBatisUtil.getSqlSession(); try{ sqlSession.update("mynamespace.update",student); }catch(Exceptione){ e.printStackTrace(); sqlSession.rollback(); throwe; }finally{ sqlSmit(); MyBatisUtil.closeSqlSession(); } } /** *查询单个学生 */ publicStudentfindById(intid)throwsException{ SqlSessionsqlSession=MyBatisUtil.getSqlSession(); try{ Studentstudent=sqlSession.selectOne("mynamespace.findById",id); returnstudent; }catch(Exceptione){ e.printStackTrace(); sqlSession.rollback(); throwe; }finally{ sqlSmit(); MyBatisUtil.closeSqlSession(); } } /** *查询多个学生 */ publicList SqlSessionsqlSession=MyBatisUtil.getSqlSession(); try{ returnsqlSession.selectList("mynamespace.findAll"); }catch(Exceptione){ e.printStackTrace(); sqlSession.rollback(); throwe; }finally{ sqlSmit(); MyBatisUtil.closeSqlSession(); } } /** *删除学生 */ publicvoiddelete(Studentstudent)throwsException{ SqlSessionsqlSession=MyBatisUtil.getSqlSession(); try{ sqlSession.delete("mynamespace.delete",student); }catch(Exceptione){ e.printStackTrace(); sqlSession.rollback(); throwe; }finally{ sqlSmit(); MyBatisUtil.closeSqlSession(); } } 2)StudentMapper.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN" "http: //mybatis.org/dtd/mybatis-3-mapper.dtd"> insertintostudents(id,name,sal)values(#{id},#{nam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mybatis 学习 笔记