MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,几乎消除了所有的 JDBC 代码和参数的手工设置以及结果集的处理,通过XML(sqlMapConfig)或注解配置数据源和原始映射,MyBatis通过SqlSession连接和操作数据源

SqlSession的获得

  1、获取数据源

    String resource = "sqlMapConfig.xml" //sqlMapConfig.xml是Mybatis的核心文件,可以配置数据源 和 映射的Mapper.xml文件的地址

    InputStream inputStream = Resources.getResourceAsStream(ressource); //通过数据源获取输入流

  2、获取SqlSession

    SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuild().Bulid(inputStream);

    SqlSession sqlSession = sqlSessionFactory.openSession();

操作数据

  sqlSession.select("namespace.id",[参数])

  sqlSession.selectList("namespace.id",[]);

  sqlSession.insert("namespace.id", [参数]); sqlSession.commit();//默认是不自动提交,必须手工提交;不提交,不会得到更新

  sqlSession.update("namespace.id", [参数]); sqlSession.commit();//同上

  sqlSession.delete("namespace.id", [参数]); sqlSession.commit();//同上

映射文件 Mapper.xml 的总结:

① 设置 namespace 命名空间,目的是为了区分映射文件中的方法;

② 结果集 resultMap 是 MyBatis 最大的特色,对象的 ORM 就由其来转换:

  • 在结果集中,包括主键 id 和 普通属性 result;
  • 在结果集中,常用的两个属性分别为:property,表示实体的属性;column,表示 SQL 查询的结果集的列。

③ 在映射文件中,常用的标签有四个,分别为: select、insert、update 和 delete:

  • 每个标签中都有 id 属性,在同一个 mapper 文件中 id 不允许重复;
  • 参数 parameterMap 已经被废弃,现在其存在的目的就是为了兼容前期的项目;现在用Map或者包装值对象来设置复杂参数;
  • 参数 parameterType 支持很多的类型,例如 int、Integer、String、Double、List、Map 或者实体对象等;
  • 返回值 resultType 用于简单的类型;
  • 返回值 resultMap 用于复杂的类型;
  • 当参数和返回值是集合的时候,其声明的是集合中的元素类型;
  • SQL 语句不区分大小写,它默认使用 PrepareStatement,预编译,可以防止 SQL 注入。

赋别名

在 Mapper.xml 文件中可以简写调用别名,例如:

<insert id="insert" parameterType="Person"><!-- 赋别名 -->
当然,提前需要我们在 sqlMapConfig.xml 中先定义别名,在这里,特别需要注意标签的顺序,如果标签的顺序出错,程序就会报错: 
<typeAliases>
<typeAlias type="yeepay.payplus.Person" alias="Person"/>
</typeAliases>

最新文章

  1. js框架设计1.2对象扩展笔记
  2. ELK:kibana使用的lucene查询语法【转载】
  3. Redhat下如何搭建NFS
  4. 自定义Log模块
  5. Socket Programming in C#--Getting Started
  6. hdu1507二分匹配
  7. open_table与opened_table
  8. playframework1.x的eclipse插件开源-playtools
  9. ADO.NET- 基础总结及实例介绍
  10. sql server 清除日志
  11. 【Bootstrap】自己主动去适应PC、平面、手机Bootstrap网格系统
  12. jQuery动态绑定
  13. VM VirtrualBox 安装centos6.5后的网络设置
  14. objective-c数组的七种遍历方法总结
  15. 【.NET】.NET MVC4 微信扫一扫功能实现-附全部代码
  16. 【转】大数据分析中Redis怎么做到220万ops
  17. ios-UITextView输入时,字数限制的倒数及对超出的字数进行截取并弹出提示框
  18. Vigenere加密
  19. 通过hbase实现日志的转存(MR AnalyserLogDataRunner和AnalyserLogDataMapper)
  20. Wpf中显示Unicode字符

热门文章

  1. UI组件之Button
  2. Oracle数据库体系结构(2)数据库实例
  3. python 3 面向过程编程
  4. debian下为stm32f429i-discovery编译uboot
  5. C++ Const 使用总结,代码实例亲测
  6. Sqlte 知识点记录
  7. Hibernate学习---第十二节:Hibernate之锁机制&amp;乐观锁实现
  8. windows 10 安装 spark 环境(spark 2.2.1 + hadoop2.7)
  9. Qt Create 4.6.2无法自动生成Android Kit
  10. ACM学习历程—HDU 5459 Jesus Is Here(递推)(2015沈阳网赛1010题)