MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。[来自官方文档]

1.MyBatis的优点和缺点

  • 优点

    1. 易于上手和掌握。

    2. sql写在xml里,便于统一管理和优化。

    3. 解除sql与程序代码的耦合。

    4. 提供映射标签,支持对象与数据库的ORM字段关系映射

    5. 提供对象关系映射标签,支持对象关系组建维护

    6. 提供xml标签,支持编写动态sql。

  • 缺点

    1. sql工作量很大,尤其是字段多、关联表多时,更是如此。

    2. sql依赖于数据库,导致数据库移植性差。

    3. 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。[重点注意]

    4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)

    5. DAO层过于简单,对象组装的工作量较大。

    6. 不支持级联更新、级联删除。

    7. 编写动态sql时,不方便调试,尤其逻辑复杂时。

    8. 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。

    9. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。

    10. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)

    11. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param)

    12. 缓存使用不当,容易产生脏数据。二级缓存机制不佳,需要使用第三方的缓存框架。

2.MyBatis安装

首先我们需要声明一下iBatis和MyBatis都是一个组织开发,只是版本不相同而已,就想我们学习的Java的版本命名规则类似,实际上MyBatis就是iBatis的一个大版本号的提升。
下载地址:https://github.com/mybatis/my...
官方文档:http://www.mybatis.org/mybati...

3.MyBatis的环境搭建

(1) 新建Java项目

  • 新建lib文件夹,导入mybatis-3.4.2.jar的框架核心包和MySQL的数据库驱动包

  • 选中两个Jar包,右键选择Bulid Path

(2) 新建MyBatis核心配置文件

个人建议将核心配置文件建立在mybatis-config.xml文件

  • 新建核心xml文件
    需要设置文档类型

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration></configuration>
  • 配置数据源

    <!-- 配置数据库环境 --><environments default="development"><environment id="development"><!-- 事务管理器:保证数据的完整性和一致性 --><!-- 框架:默认情况下CUD操作需要手动提交事务 --><transactionManager type="JDBC" /><!-- 使用的是连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://127.0.0.1:3306/cy42_mss" /><property name="username" value="root" /><property name="password" value="shxt" /></dataSource></environment></environments>

百度Java如何实行连接池的原理?

  • 配置加载映射文件

    <mappers><mapper resource="com/shxt/model/ShxtMapper.xml"/></mappers>
  • 附录

(3) 新建MyBatis映射文件

  • 位置建立: com/shxt/model/ShxtMapper.xml

  • 建立映射文件头部信息和命名空间

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- <mapper namespace="命名空间,唯一的不能重复"> -->
<mapper namespace="shxt.cy42.mss"></mapper>

目前我们使用的传统模式,那么namespace一般建议使用持久化类的全路径com.shxt.model.User这样的字符串保持一致,方便后面代码处理.
但是,我们现在没有持久化类,所以就是设置了一个简单的字符串

  • 定制SQL语句,简单测试

<!-- 定制SQL语句 --><insert id="add01">INSERT INTO skill  (skill_name,num) VALUES ('JS',75)</insert>
  • 附录

(4) 测试代码

public class API的调用过程演示 {public static void main( String[] args ) {//读取核心配置文件的位置//InputStream is = Resources.getResourceAsStream("com/shxt/model/mybatis-config.xml");SqlSession sqlSession = null;try {//1.读取核心配置文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//2.创建SqlSession工厂SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);//3.获取SqlSession //****** SqlSession完成所有的持久化操作CRUDsqlSession = sqlSessionFactory.openSession();//4.关键步骤: 定位执行SQL语句 重点重点重点//****如何定位  (namespace+"."+id)int row = sqlSession.insert("shxt.cy42.mss.add01");//5.针对于CUD操作需要手动提交事务sqlSession.commit();System.out.println("影响的行数:"+row);} catch (IOException ex) {ex.printStackTrace();}finally {//6.关闭资源if(sqlSession!=null){sqlSession.close();}}}}

2.平凡之路-初识MyBatis相关推荐

  1. 1 初识Mybatis

    初识MyBatis 文章目录 初识MyBatis 1.MyBatis简短介绍 2.持久化与ORM 3.搭建MyBatis开发环境 4.使用Mybatis查询数据库内容 1.找不到mapper的映射xm ...

  2. 中国民生银行天眼日志平台架构演进的平凡之路

    本文由 [AI前线]原创,原文链接:t.cn/RYgJ8hD AI 前线导读: "随着中国民生银行的 IT 业务系统的迅速发展,主机.设备.系统.应用软件数量不断增多,业务资源访问.操作量不 ...

  3. 《中国民生银行天眼日志平台架构演进的平凡之路》阅读有感

    <中国民生银行天眼日志平台架构演进的平凡之路>阅读有感 随着中国民生银行的 IT 业务系统的迅速发展,主机.设备.系统.应用软件数量不断增多,业务资源访问.操作量不断增加,对于应用整体系统 ...

  4. JavaWeb进阶之路:MyBatis初体验

    JavaWeb进阶之路:MyBatis初体验 1. 简介 1.1 什么是MyBatis MyBatis 是一款优秀的持久层框架. 它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几 ...

  5. 没毕业就3次跳槽的经历,走不平凡的路,让人跌破眼镜。

    今天和朋友聊了下自己这段时间找工作的历程,感触挺多的,也挺特别的,应该算特别吧,毕竟还没毕业就跳了3次槽,不说前无古人,后无来者,但也算不简单了吧!为此有了写下这篇随笔想法,不注重什么文笔,也不注重什 ...

  6. 平凡之路:计算机基础+python初体验

    主要内容: 计算机发展史 计算机硬件及操作系统 字符编码简介 Python简介 Python基础知识 一.初窥计算机的世界 1.简述计算机的发展史 从第一台电子计算机发展到今日,掐指算下来也有70余年 ...

  7. 初识mybatis源码

    初识mybaits的时候,我还是只小菜鸟,而你也总喜欢找我问问题.而如今我懂了很多,但是找我问问题 的人再也不是你了. 遥想公瑾当年,小乔初嫁了,雄姿英发. 羽扇纶巾,谈笑间,樯橹灰飞烟灭. 春去秋来 ...

  8. 乌云下,种因时:vivo的平凡之路

    2020年,手机市场遭遇了多重阴霾.长短期的三大问题同时袭扰手机市场,给整个产业生态带来了不同程度的影响:全球疫情影响了手机线下零售与产业链工作:持续发酵的商业平台期,让手机市场进一步出现出货量下降: ...

  9. python虫虫(平凡之路)

    爬取单一网页上的内容,并保存到txt文档内,以小说排行榜首页为例: import requests import time import re url = 'http://top.baidu.com/ ...

最新文章

  1. STL--Lambdas(二)
  2. IOS中UIActionSheet使用方法详解
  3. 对Java注解(Annotation)初步的认识
  4. Docker Redis 安装
  5. .php对收录有影响吗,你知道吗?网站收录其实对网站排名影响并不大
  6. bochs上网镜像怎么上网_【bochs win10镜像可上网版】bochs win10镜像img下载 完整版-趣致软件园...
  7. html css div圆角边框,div圆角边框的css写法
  8. Linux绚丽屏保xscreensaver安装
  9. html滚动轮播图片代码,html 无缝轮播图完整代码
  10. 视频教程-小学生c++趣味编程入门视频教程 少儿C十十信息学奥赛竞赛网课-C/C++
  11. Java中观察者模式与委托的对比
  12. 预装WIN8的电脑是GPT分区模式,无法安装WIN7
  13. 2021年度总结—四非计算机保研经历(参营:清华网研院、中科大先研院、华师大数据科学院、厦大计算机系、上科大信息学院)
  14. 联想拯救者19款原厂系统镜像
  15. 黑马点评--优惠卷秒杀
  16. android n刷机,刷机王子先行一步,一加3成功吃上Android N牛轧糖
  17. Oracle中SCOTT用户的 emp、dept、bonus、salgrade表的意思及其属性的意思
  18. 如何在Python编码面试中脱颖而出
  19. springMVC类型转换
  20. BUUCTF msic 专题(116)[GKCTF 2021]excel 骚操作

热门文章

  1. 使用iperf进行设备吞吐量测试
  2. MySQL 中的三中循环 while loop repeat 的基本用法
  3. MVC Model验证
  4. 浙大1202 zoj1202
  5. Delphi关于StringGrid的公用模块[转]
  6. Mifare Ultra Light 非接触式IC卡发卡总结
  7. C#操作注册表增删改查及关机能保存问题
  8. 在c#中将debug/release下文件打包成一个可直接运行exe文件
  9. C#String.Split (string[], StringSplitOptions) 多参数分割得到数组
  10. asp接收ajax乱码_Asp中处理AJAX乱码问题总结