首页 > 技术文章 > MyBatis 学习总结(1)

lhblogs 2017-09-04 15:50 原文

  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>

 

推荐阅读