一. Mybatis是一个优秀的持久层框架,基于ORM设计思想实现了以对象的方式操作数据库。 ORM思想: 对象关系映射 是一种程序设计技术,用于实现向对象编程语言里不同类型系统的数据之间的转换。 概述:用对象的方式操作数据库。 衍生:1.对象与数据库里的表一一映射。 2.对象的属性与数据库里表的字段一一映射。 3.其中的映射应该由程序自动完成,无需人为干预。 Mybatis的ORM并不完全,只是完成了结果集映射,但是sql语句需要自己手写,所以也称之为半自动化的ORM映射框架。
二.Mybatis特点 简单易学:本身很小 简单,没有任何第三方依赖,安装只要两个jar包和配置结果sql映射文件。易于学习,使用灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响,sql写在xml文件里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
三.Mybatis 其实是封装了jdbc。 总结jdbc开发出现的问题: 1.频繁创建数据库连接对象,释放,容易造成系统资源浪费,影响系统性能,企业项目中可以使用连接池解决这个问题,但是jdbc需要自己实现连接池。而mybatis框架已经提供了连接池。 2.sql语句定义,参数设置,结果集处理存在硬编码,企业项目中SQL语句变化的可能性较大,一旦发生变化需要修改Java代码,系统需要重新编译,重新发布不好维护,一句话耦合性强。 3.结果集处理存在重复的代码,处理麻烦,如果可以映射成为Java对象比较方便。 mybatis封装jdbc的优点: 接触sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,便于系统的设计更清晰,更易维护,更易于单元测试,sql和代码分离,提高了可维护性。 提供映射标签,支出对象与数据库的ORM字段关系映射。 提供对象关系映射标签,支出对象关系组建维护。 提供xml标签,支持编写动态sql 动态sql主要用<if><foreach><choose> 这三个标签条件来组成。还有<where>标签加上可以自动将参数里多余的and和or给去掉 <set>标签加上可以自动将参数里多余的,号给去掉。这两个标签是为了保证sql语句的正确。
四.mybatis.config.xml文件 它是mybatis框架的核心配置文件,里面封装了JDBC代码,并且加载了mapper接口的实现文件,在这个映射中将它与接口进行业务绑定。通过namespace.mapper里面写一个个具体的接口,即就是具体业务。
五.总结Mybatis mybatis是一个持久层的框架,是对JDBC操作数据库的封装,开发者只需关注业务本身,不需要花费精力去处理加载驱动,创建数据库连接对象,等一系列繁杂的过程。 mybatis通过xml或注解进行配置,将java对象与sql语句中的参数自主映射生成最终执行的sql语句,并将sql语句执行结果自动映射成了java对象,返回给业务层应用。 其中重点: 1.xml映射文件必须与接口一一绑定。 namespace:指定需要绑定的接口名称,不能重复。 namespace是mybatis映射文件的唯一表示,与接口对应。 2.id表示接口方法 resultType 对象的包路径 parameterType返回值结果类型,它可以自动识别,可以不写,根据名称,动态取值#{}关键字。
六.mybatis具体实现方式 1.抽取生成sqlsessionFactory @BeforeEach 2.利用mybatis查询数据时,如果返回值结果不确定且唯一,则使用pojo实例对象接收,如果不能确定使用list集合接收。 3.mybatis默认支持单值传参,如果遇到多值,需要将多值转化为单值。 策略:1.利用pojo对象封装 2.利用map集合 3.如果参数一定使用多值操作则加上注解@param()“sex” string sex 4.#号和$符的用法 #号有预编译效果,为数据添加一对“”号 $号没有预编译效果,一般以字段名称为参数时使用。 5.mybatis原生条件下做更新操作时,需要手动提交事务,sqlsessionFatory.opensession(true) 6.xml种常见的转义符 > ⁢ & <![CDATA[ ]]> 7.mybatis中循环遍历写法foreach。
七.mybatis优化设置 简化 别名包 在mybatis xml 映射文件中需要pojo实体对象的路径,每次写很繁琐,引入别名包的规则。