Mybatis(01)
1、什么是Mybatis?
yBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2、Mybaits的优点:
简单
易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
实用
提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了DAO框架,可以使我们更容易的开发和配置我们的DAL层。
灵活
通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
功能完整
提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了DAO支持,并在DAO框架中封装了ADO.NET,NHibernate和DataMapper。
增强系统的可维护性
通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
3、Mybatis框架的缺点
(1)SQL语句的编写工作量较大,对开发人员编写SQL的能力有一定的要求。
(2)SQL语句依赖于数据库,导致数据库不具有好的移植性,不可以随便更换数据库。
4、MyBatis框架的适用场合
MyBatis专注于SQL自身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需求变化较多的项目,例如Web项目,那么MyBatis是不二的选择。
5、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
在使用MyBatis开发DAO层时,当实体类中的属性名和表中的字段名不一样时,查询出来的值为null,此时有3种解决方法
解决方法1
在Mapper.xml映射文件中,写SQL语句时起别名
解决方法2
在Mybatis全局配置文件中开启驼峰命名,注意:前提是数据库中的字段是按驼峰命名规则的两个单词之间加“_”命名的
<settings>
<!-- 开启驼峰命名规则,可以将数据库中的下划线映射为驼峰命名
例如:user_name可以映射为userName -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
解决方法3
在Mapper.xml映射文件中使用resultMap自定义映射规则