MyBatis入门

1.MyBatis前身是iBatis,是Apache的一个开源项目,2010年这个项目迁移到了Google Code,改名为MyBatis,2013年迁移到GitHub。是一个基于DAO层ORM框架      ORM:Object Relational Mapping 对象关系映射 在mybatis中指的是sql语句与实体类之间的映射

2.MyBatis的优缺点
优点:减少代码量,小巧并且简单易学,SQL语句从程序代码中彻底分离,降低耦合度,便于管理和优化,并可重用,支持编写动态SQL语句。
缺点:SQL语句编写工作量大,对开发人员有一定的要求,数据库移植性差
适用场合:MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能要求很高,或者需求变化多的项目,如互联网项目,适合适用MyBatis框架。

 
3.MyBatis开发环境的搭建: 3.1导入MyBatis jar包      3.2编写实体类
 
3.3编写MyBatis的核心配置文件 mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD 

 Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd 

">
<configuration>
<!-- 引入外部properties文件       注意:引入外部文件属性的优先级高于内部设置的属性 -->
<properties resource="database.properties">
<property name="username" value="root"/>
<property name="password" value="123456"/>
</properties>
<!-- 设置mybatis运行的一些行为 -->
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
<!-- 设置类型别名 -->
<typeAliases>
<package name="com.kawa.pojo"/>
</typeAliases>
<!--  方式一:比较繁琐
<typeAliases>
<typeAlias alias="User" type="com.kawa.pojo.User"/>
</typeAliases>
-->
<!-- 配置mybatis多套运行环境 -->
<environments default="development">
<environment id="development">
<!-- 配置事务管理,采用JDBC的事务管理    mybatis提供了两种事务管理类型 JDBC、MANAGED-->
<transactionManager type="JDBC" />
<!-- POOLED:mybatis自带数据源,JNDI:基于tomcat的数据源      /UNPOOLED-->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<!-- 1.使用类资源路径获取资源 -->
<mapper resource="com/kawa/dao/UserMapper.xml" />
<!-- 2.使用URL获取资源 -->
<!-- <mapper url="file:///E:/..."/> -->
</mappers>
</configuration>

3.4编写MyBatis 实体类的映射文件xxxMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD 

 Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd 

">
<mapper namespace="com.kawa.dao.UserMapper">
<select id="count" resultType="int">
select count(1) as count from smbms_user
</select>
<select id="getUserList" resultType="User">
select * from smbms_user
</select>
</mapper>

3.5编写测试类测试
/**
* 测试查询用户列表      基于Mapper.xml方式操作
*/
@Test
public void testGetUserList() {
//获取SqlSession操作对象 步骤:
String resource = "mybatis-config.xml";
SqlSession sqlSession = null;
try {
//1.获取mybatis-config.xml文件的输入流
InputStream is = Resources.getResourceAsStream(resource);
//2.创建sqlSessionFactory对象
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//3.创建sqlSession对象
sqlSession = sessionFactory.openSession();
List<User> userList = sqlSession.selectList("com.kawa.dao.UserMapper.getUserList");
for (User user : userList) {
logger.debug("UserMapperTest userName --> "+user.getUserName());
}
} catch (IOException e) {
e.printStackTrace();
}finally{
sqlSession.close();
}
}
/**
* 测试查询用户列表      基于Mapper接口方式操作数据
*/
@Test
public void testGetUserList2() {
//获取SqlSession操作对象 步骤:
String resource = "mybatis-config.xml";
SqlSession sqlSession = null;
try {
//1.获取mybatis-config.xml文件的输入流
InputStream is = Resources.getResourceAsStream(resource);
//2.创建sqlSessionFactory对象
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//3.创建sqlSession对象
sqlSession = sessionFactory.openSession();
List<User> userList = sqlSession.getMapper(UserMapper.class).getUserList();
for (User user : userList) {
logger.debug("UserMapperTest userName --> "+user.getUserName());
}
} catch (IOException e) {
e.printStackTrace();
}finally{
sqlSession.close();
}
}
4.MyBatis的基本要素
  1.MyBatis的核心配置文件
    configuration 配置
      properties  可配置在Java属性配置文件中
      settings  修改MyBatis在运行时的行为方式
      typeAliases  为Java类型命名一个别名
      typeHAndlers 类型处理器
      objectFactory 对象工厂
      piugins  插件
      environments  环境
      environment  环境变量
        transactionManage  事务管理器
        dataSource  数据源
      mappers  映射器
2.SQL映射文件
...Mapper.xml
  SQL映射文件的几个顶级元素(按照定义顺序)
    mapper-namespace
    cache-配置给定命名空间的缓存
    cache-ref-从其他命名空间应用缓存配置
    resultMap-用来描述数据库结果集和对象的对应关系
    sql-可用重用的SQL块,也可以被其他语句引用
    insert-映射插入语句
    update-映射更新语句
    delete-映射删除语句
    select-映射查询语句
 
3.mybatis的核心接口和类:
    SqlSessionFactoryBuilder------->build() SqlSessionFactory---------->openSession() SqlSession
      SqlSessionFactoryBuilder:用过即丢,推荐作用范围:方法体内
      SqlSessionFactory:最佳作用域范围:应用的全局作用域  生命周期与应用的生命周期相同
      SqlSession:线程级  一个request请求期间
  


初始MyBatis、SQL映射文件的更多相关文章

  1. Mybatis sql映射文件浅析 Mybatis简介(三)

    简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...

  2. Mybatis sql映射文件浅析 Mybatis简介(三) 简介

    Mybatis sql映射文件浅析 Mybatis简介(三)   简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...

  3. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  4. MyBatis -- sql映射文件具体解释

    MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...

  5. SSM - Mybatis SQL映射文件

    MyBatis 真正的力量是在映射语句中.和对等功能的jdbc来比价,映射文件节省很多的代码量.MyBatis的构建就是聚焦于sql的. sql映射文件有如下几个顶级元素:(按顺序) cache配置给 ...

  6. MyBatis 创建核心配置文件和 SQL 映射文件

    Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...

  7. MyBatis 的基本要素—SQL 映射文件

    MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单.对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且 ...

  8. Mybatis(二) SQL映射文件

    SQL映射文件 单条件查询 1. 在UserMapper接口添加抽象方法 //根据用户名模糊查询 List<User> getUserListByName(); 2. 在UserMappe ...

  9. MyBatis学习-映射文件标签篇(select、resultMap)

    MyBatis 真正的核心在映射文件中.比直接使用 JDBC 节省95%的代码.而且将 SQL 语句独立在 Java 代码之外,可以进行更为细致的 SQL 优化. 一. 映射文件的顶级元素 selec ...

随机推荐

  1. CSS 选择器优先级问题

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...

  2. C# 汉语转拼音

    汉语转拼音或首字母 通常不少网站上有汉语转拼音功能,今天就小记下这段汉语转拼音的代码,自己测试ok,现把代码贴出来,以备日后使用: 效果 用法很简单后台使用到了两个类文件,一个是:ConvertHzT ...

  3. 使用apidoc根据JS文件生成接口文档

    1.安装nodejs.下载网址:http://www.nodejs.org: 2.安装apidoc.运行cmd,切换到nodejs的安装目录,在命令行输入: 1 npm install apidoc ...

  4. LoadRunner压力测试之Unique Number参数类型、Random Number参数类型浅析

    前几天工作需要用LoadRunner进行压力测试,期间对手机号进行参数化设置. 当时选用了<Value>137{Random_quhao}{Unique_weiyi}</Value& ...

  5. Ionic如何实现单选二级菜单切换

    Ionic如何实现单选二级菜单切换 最近有个需求,需要做一个用户视图,数据全都从PC端系统实时取,由于这个功能在电脑浏览器展示还可以,即使菜单全部展开,只要美工稍加调整下位置也是放得下的,但是同样的功 ...

  6. jenkins2 -pipeline 常用groovy脚本

    jenkins2的核心是pipeline,pipeline的核心是groovy. 那有一些基础的groovy是必须经常使用的,如变量赋值,变量引用,打印变量,输出字符,任务调用,循环判断等. Groo ...

  7. ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据

    摘要:最近在写网站,好不容易弄好了需求又变了,没错企业的门户网站硬要弄成后台管理系统一样,没办法作为小工的我只能默默的改.前台HTML页面需要提交数据到后台处理,又不能用form表单,于是乎研究了1天 ...

  8. mybatis入门介绍二

    相信看过我的上一篇博客的同学都已经对mybatis有一个初步的认识了.这篇博客主要是对mybatis的mapper代理做一下简单的介绍,希望能够帮助大家共同学习. 我的上一篇博客:mybatis入门介 ...

  9. Javascript跨域后台设置拦截

    子域名之间互相访问需要跨域 结论放在开头: 服务端必须设置允许跨域 客户端带cookie需要设置withCredentials 无论服务端是否允许跨域,该request都会完整执行 options预请 ...

  10. Hardcoded string XXX,&…

    eclipse布局文件警告:Hardcoded string XXX, should use @string resource