zoukankan      html  css  js  c++  java
  • Mybatis核心配置文件,传统开发和代理开发(主流)

    原始jdbc操作有很大优化空间:


    Mybatis框架完成了这些事情。

    Mybatis
    文档官网:https://mybatis.org/mybatis-3/zh/index.html
    持久层框架。DAO层,用于处理数据库。

    核心配置文件 sqlMapConfig.xml(老版本xml内部标签按以下顺序)


    properties标签用于加载属性文件


    配置:





    settings标签手动设置当前mybatis使用的日志工具为log4j

    配置:





    typeAliases标签自定义实体类的别名,一般统一扫描实体类的包即可

    使用即可实现domain包下任何类的类名都直接作为不区分大小写的别名使用

    配置:





    environments标签用于配置mybatis连接数据库的参数

    事务管理方式

    连接池

    配置





    mappers标签用于指定我们要加载的映射配置

    配置









    映射配置文件UserMapper.xml

    mapper标签:用于配置DAO的。

    属性:namespace:用于指定DAO类的名称,必须是唯一的。写DAO的全类名。





    子标签增删改查的标签,用于指定某个操作的sql语句如select、insert、delete、update标签

    属性id:对应dao中的方法名



    属性resultType:指定该方法的返回值类型,如果返回的是集合,只需要写集合的泛型类型

    现在我们用自定义类型来替代



    属性parameterType:指定dao方法参数类型,可以在sql语句中,使用#{属性名}格式的表达式获取参数值进行设置,如果参数类型是简单类型,而且只有一个,我们在sql语句中可以使用#{任意字符串}进行参数设置

    现在我们用自定义类型来替代





    在insert操作时,有时需要获取自动生成的id,可以在insert标签上设置以下属性

    useGeneratedKeys="true" 使用自动生成的主键,设置为true即可


    ###keyColumn="id" 主键列的名称,填写数据库中的列名即可
    ###keyProperty="id" 实体类中的属性名,和get方法相关
    ###指定上述属性后,在执行完insert之后,传递的参数位置的实体类会被自动设置上自动生成的主键。



    mybatis的api


    SqlSession工厂构造器SqlSessionFactoryBuilder:


    通常这样写:



    SqlSession工厂对象SqlSessionFactory:

    openSession()没设置为true,则要在执行SqlSession后提交事务



    执行(增删改查执行时不同)


    执行插入


    释放资源



    Mybatis 的代理开发方式实现DAO层的开发(主流)

    Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由Mybatis 框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。


    编写UserMapper接口



    让mybatis框架实现代理dao的要求:

    UserMapper.xml文件中的namespace与UserMapper接口的全限定名相同**


    UserMapper.xml中定义的每个statement的id和UserMapper接口方法名相同**


    UserMapper.xml中定义的每个sql的parameterType的类型和UserMapper接口方法的输入参数类型相同

    这里二者都没有参数


    UserMapper.xml中定义的每个sql的resultType的类型和UserMapper接口方法的输出参数类型相同**


    UserMapper.xml配置文件的位置和名称要和dao接口的目录层级关系及名称保持一致(这里都叫UserMapper)



    调用实现

  • 相关阅读:
    包和常用内置模块(二)
    常用内置模块(一)
    正则表达式和re模块
    迭代器和生成器
    函数(四)
    函数(三)闭包函数与装饰器
    Codeforces Round #539 (Div. 2) D 思维
    Codeforces Round #539 (Div. 2) 异或 + dp
    Codeforces Round #546 (Div. 2) E 推公式 + 线段树
    牛客练习赛42 C 反着计算贡献
  • 原文地址:https://www.cnblogs.com/maomaodesu/p/12306804.html
Copyright © 2011-2022 走看看