您的位置:首页 > 其它

mybatis第一天——入门与概述

2017-05-21 13:26 274 查看
  大纲摘要:

    1、mybatis的介绍

    2、Mybatis的入门

      a) 使用jdbc操作数据库存在的问题

      b) Mybatis的架构

      c) Mybatis的入门程序

    3、Dao的开发方法

      a) 原始dao的开发方法——由ibatis遗留下来的

      b) mapper动态代理方式

    4、SqlMapConfig.xml文件说明

一、mybatis概述 

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

  2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身

  而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

    Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,

  并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

    是一个不完全的orm框架

  根据经典的凡技术必登其官网的结论,官网文档很有必要参阅http://www.mybatis.org/mybatis-3/zh/index.html

二、mybatis入门

【更新】 问题总结

    1、 在创建连接时,存在硬编码

      配置文件(全局配置文件)

    2、 在执行statement时存在硬编码

      配置文件(映射文件)

    3、 频繁的开启和关闭数据库连接,会造成数据库性能下降。

      数据库连接池(全局配置文件)

  很多硬编码,把程序写死了!

  1.mybatis架构

  

别名    映射的类型
_byte     byte
_long     long
_short     short
_int     int
_integer     int
_double     double
_float     float
_boolean     boolean
string     String
byte     Byte
long     Long
short     Short
int     Integer
integer     Integer
double     Double
float     Float
boolean     Boolean
date     Date
decimal     BigDecimal
bigdecimal     BigDecimal
map    Map


View Code
  3.[b]自定义别名:


  在SqlMapConfig.xml中配置:

<typeAliases>
<!-- 单个别名定义 -->
<typeAlias alias="user" type="cn.itcast.mybatis.po.User"/>
<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
<package name="cn.itcast.mybatis.po"/>
<package name="其它包"/>
</typeAliases>


  //建议遵循驼峰式命名规则,批量别名时默认别名是类名(请使用规范首字母小写)

  4.mappers(映射器)

  1 <mapper resource=" " />

  使用相对于类路径的资源

  如:<mapper resource="sqlmap/User.xml" />

  2. <mapper class=" " />

  使用mapper接口类路径

  如:<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>

  注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

  3.<package name=""/> 包扫描的方式

    使用的最多最简便,但是注意遵循相关的规则,与上述接口文件编写规则配置文件一致(映射文件与接口同名并且同一目录)

  注册指定包下的所有mapper接口

  如:<package name="cn.itcast.mybatis.mapper"/>

最后,贴出目录结构(夹带了一点day02的QueryVo等)

  


//三个source folder,为的是实现maven的目录结构

  今日小结:

  1. mybatis是一个持久层框架, 作用是跟数据库交互完成增删改查
  2.原生Dao实现(需要接口和实现类)
  4.动态代理方式(只需要接口)
  mapper接口代理实现编写规则:
    1) 映射文件中namespace要等于接口的全路径名称
    2) 映射文件中sql语句id要等于接口的方法名称
    3) 映射文件中传入参数类型要等于接口方法的传入参数类型
    4) 映射文件中返回结果集类型要等于接口方法的返回值类型

  5. #{}占位符:占位
    如果传入的是基本类型,那么#{}中的变量名称可以随意写
    如果传入的参数是pojo类型,那么#{}中的变量名称必须是pojo中的属性.属性.属性...

  6. ${}拼接符:字符串原样拼接
    如果传入的是基本类型,那么${}中的变量名必须是value
    如果传入的参数是pojo类型,那么${}中的变量名称必须是pojo中的属性.属性.属性...
    注意:使用拼接符有可能造成sql注入,在页面输入的时候可以加入校验,不可输入sql关键字,不可输入空格
  7. 映射文件:
    1)传入参数类型通过parameterType属性指定
    2)返回结果集类型通过resultType属性指定
  8. hibernate和mybatis区别:
    hibernate:它是一个标准的orm框架,比较重量级,学习成本高.
  优点:高度封装,使用起来不用写sql,开发的时候,会减低开发周期.数据库无关性!
  缺点:sql语句无法优化
  应用场景:oa(办公自动化系统), erp(企业的流程系统)等,还有一些政府项目,
  总的来说,在用于量不大,并发量小的时候使用.
    mybatis:它不是一个orm框架, 它是对jdbc的轻量级封装, 学习成本低,比较简单
  优点:学习成本低, sql语句可以优化, 执行效率高,速度快.【提高了SQL控制权!
  缺点:编码量较大,会拖慢开发周期
  应用场景: 互联网项目,比如电商,P2p等
  总的来说是用户量较大,并发高的项目.

  【补充注意事项】:当出现无法完成绑定异常时,是由于只有.java文件被编译而xml文件未被编译,方法之一可以在pom.xml中加入resource标签:   

<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8083</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: