• MyBatis1


    入门篇
    编码流程
    1. 编写全局配置文件:SqlMapConfifig.xml
    2. 映射文件:xxxMapper.xml
    3. 编写dao代码:xxxDao接口、xxxDaoImpl实现类
    4. POJO类
    5. 单元测试类
     
    添加用户
    #{}:是通过反射获取数据的---StaticSqlSource
    ${}:是通过OGNL表达式会随着对象的嵌套而相应的发生层级变化 --DynamicSqlSource
    映射文件
     
    <!-- 添加用户 -->
    <insert id="insertUser" parameterType="com.kkb.mybatis.po.User">
    insert into user(username,birthday,sex,address)
    values(#{username},#{birthday},#{sex},#{address})
    </insert>
     
    OGNL
    对象导航图语言
    |---User(参数值对象)
    |--username--张三
    |--birthday
    |--sex--男
    |--dept -- Department
    |--name
    |--no
    OGNL表达式去获取Department对象的name属性:dept.name
     
    基础应用篇
     
    mapper代理开发方式
    此处使用的是JDK的动态代理方式,延迟加载使用的cglib动态代理方式
     
    代理理解
    代理分为静态代理和动态代理。此处先不说静态代理,因为Mybatis中使用的代理方式是动态代理。
    动态代理分为两种方式:
    基于JDK的动态代理--针对有接口的类进行动态代理
    基于CGLIB的动态代理--通过子类继承父类的方式去进行代理。
     
    XML方式
    开发方式
    只需要开发Mapper接口(dao接口)和Mapper映射文件,不需要编写实现类。
    开发规范
    Mapper接口开发方式需要遵循以下规范:
    1、 Mapper接口的类路径与Mapper.xml文件中的namespace相同。
    2、 Mapper接口方法名称和Mapper.xml中定义的每个statement的id相同。
    3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相
    同。
    4、 Mapper接口方法的返回值类型和mapper.xml中定义的每个sql的resultType的类型相同。
     
    mapper映射文件
     
    <?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.kkb.mybatis.mapper.UserMapper">
    <!-- 根据id获取用户信息 -->
    <select id="findUserById" parameterType="int"
    resultType="com.kkb.mybatis.po.User">
    select * from user where id = #{id}
    </select>
    </mapper>
     
    mapper接口
    /**
    * 用户管理mapper
    */
    public interface UserMapper {
    //根据用户id查询用户信息
    public User findUserById(int id) throws Exception;
    }
     
    全局配置文件中加载映射文件
     
    <!-- 加载映射文件 -->
    <mappers>
    <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
    全局配置文件
    配置内容
    SqlMapConfifig.xml中配置的内容和顺序如下:
    properties(属性)
    settings(全局配置参数)
    typeAliases(类型别名)
    typeHandlers(类型处理器)--Java类型--JDBC类型--->数据库类型转换
    objectFactory(对象工厂)
    plugins(插件)--可以在Mybatis执行SQL语句的流程中,横叉一脚去实现一些功能增强,比如
    PageHelper分页插件,就是第三方实现的一个插件
    environments(环境集合属性对象)
    environment(环境子属性对象)
    transactionManager(事务管理)
    dataSource(数据源)
    mappers(映射器)
    properties标签
    SqlMapConfifig.xml可以引用java属性文件中的配置信息。
    1、在classpath下定义db.properties文件,
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=root
    2、在SqlMapConfifig.xml文件中,引用db.properties中的属性,具体如下:
    <properties resource="db.properties"/>
    <environments default="development">
    <environment id="development">
    <transactionManager type="JDBC"/>
    <dataSource type="POOLED">
    <property name="driver" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    </dataSource>
    </environment>
    </environments>
    properties标签除了可以使用resource属性,引用properties文件中的属性。还可以在properties标签
    内定义property子标签来定义属性和属性值,具体如下:
    <properties>
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    </properties>
    注意: MyBatis 将按照下面的顺序来加载属性:
    读取properties 元素体内定义的属性。
    读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
    typeAlias标签
    别名的作用:就是为了简化映射文件中parameterType和ResultType中的POJO类型名称编写。
    默认支持别名
    自定义别名
    在SqlMapConfifig.xml中进行如下配置:
    <typeAliases>
    <!-- 单个别名定义 -->
    <typeAlias alias="user" type="com.kkb.mybatis.po.User"/>
    <!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
    <package name="com.kkb.mybatis.po"/>
    </typeAliases>
    mappers标签
    <mapper resource=""/>
    <mapper url="">
    使用绝对路径加载资源
    如:
    <mapper url="file://d:/sqlmap/User.xml" />
    <mapper class=""/>
    使用mapper接口类路径,加载映射文件。
    如:
    <mapper class="com.kkb.mybatis.mapper.UserMapper"/>
    注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
    <package name=""/>
    注册指定包下的所有mapper接口,来加载映射文件。
    如:
    <package name="com.kkb.mybatis.mapper"/>
    注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
    输入映射和输出映射
    parameterType(输入类型)
    parameterType属性可以映射的输入参数Java类型有:简单类型、POJO类型、Map类型、List类型
    (数组)。
    Map类型和POJO类型的用法类似,本课程只讲POJO类型的相关配置。
    List类型在动态SQL部分进行讲解。
    resultType(输出类型)
    resultType属性可以映射的java类型有:简单类型、POJO类型、Map类型。
    不过Map类型和POJO类型的使用情况类似,所以只需讲解POJO类型即可。
    使用要求
    使用resultType进行输出映射时,要求sql语句中查询的列名和要映射的pojo的属性名一致。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Navicat 回复 psc 文件 Mysql
    android SDK 更新问题完美解决 http://dl-ssl.google.com refused
    利用android来赚钱
    苹果应用 Windows 申请 普通证书 和Push 证书 Hbuilder 个推(2)
    苹果应用 Windows 申请 普通证书 和Push 证书 Hbuilder 个推
    Java version 32转64位
    浅谈Jquery中的bind()、live()、delegate()、on()绑定事件方式
    JavaScript之深浅拷贝
    关于一道JS面试题的思考
    EasyUI-Tooltip(提示框)学习
  • 原文地址:https://www.cnblogs.com/zhouyideboke/p/16419134.html
Copyright © 2020-2023  润新知