初学者的MyBatis01笔记

MyBatis01笔记

MyBatis标准配置  MyBatis全局配置文件【了解】  MyBatis的SQL映射文件

1、MyBatis标准配置

  1、导入jar包

  2、创建MyBatis的全局配置文件:mybatis-config.xml

  3、创建mybatis的SQL映射文件和mapper接口

    要求:SQL映射文件的namespace值和接口的全类名保持一致

       SQL映射文件的SQL语句的id值和接口的方法名保持一致

  4、编写测试代码,验证是否成功

  总结:xxxDao---------->xxxDaoImpl

     xxxMapper-------->sql映射文件

              1、namespace值和接口全类名保持一致

              2、sql语句所载标签的id值和方法名保持一致

     BookMapper mapper = openSession.getMapper(BookMapper.class)

     调用接口代理类对象的方法

2、MyBatis全局配置文件

  注意:MyBatis全局配置文件中的标签是有顺序的

  1、Properties标签 作用:加载properties配置文件信息

  2、Setings标签: Settings标签内部可以设置多个setting标签,每个标签对应着mybatis的一个设置项

  3、typeAliases标签 类型别名处理器:给一个类起别名

  注:mybatis自带了一些类型别名,如基本的数据类型,引用数据类型

  4、typeHandlers标签:将java数据类型转换为数据库的数据类型

  5、Environments标签:Environments里面有多个environment标签,

  每个environment标签可以设置mybatis的运行环境。

  6、databaseIdProvider标签:

  作用:为数据库厂商起别名

  由于MyBatis支持多种数据库,(如:Oracle、MySQL、SqlServler、Db2

  注:配置MyBatis全局配置文件,SQL映射文件

  7、Mappers标签:作用:加载Mapper接口或SQL映射文件

3、SQL映射文件

  1、增删改查标签

    1、对于增删改标签,必须提交事务。提交事务的两种方式:

            1.1.手动提交:openSession.commit()

      1.2.自动提交:sqlSessionFactory.openSession(true);

    2、只有select必须指定返回值类型,所有标签的parameterType都可以省略。

  2、往数据表中添加数据的时候获取自增 

  要求:

      1.接口方法的参数必须是一个pojo对象

     2.在insert标签设置两个属性:

       3.useGenerateKeys=true,keyProperty=“pojo对象属性”

  3、MyBatis支持基于注解的SQL语句

    @select(value="select * from book where id = #{bid}")

    注:建议使用基于xml的SQL语句

  4、如何在SQL映射文件中取mapper接口中的参数

    1、一个普通参数

      #{随便写}

    2、多个普通参数

      #{param注解的value值}

    3、参数是一个pojo对象

       #{pojo对象的属性名}

    4、是一个map对象

      #{map中键值对的key}

    5、参数是一个List、Collection、Set?

       #{list[下标]}或者#{collection[下标]}

    注:需要接口和SQL映射文件

4、返回值

  基本数据类型:Integer、int、Long、long、boolean、Boolean、double、

        select:resultType必须指定

        insert/update/delete:返回的是添加、修改和删除的行数,只需在接口的方法上声明

    返回值类型,不需要再标签上指定resultType

  pojo对象:

    select:resultType必须指定pojo对象的全类名

  pojo对象列表:

    select:resultType必须指集合中元素的数据类型

  Map:封装数据表中的一样数据  封装数据表中的多行数据

5、#{}与${}的区别

  #{}:采用占位符?,以预编译的方式设置参数的,类似于javaweb部分的preparestatement对象,

  SQL安全的,不存在sql注入问题。

  ${}:直接将参数设置到sql语句中,类似于javaweb部分的statement对象,存在SQL注入问题。

  在有些特殊情况下,我们必须使用${}.例如:表名、like模糊查询、排序字段。

6、ResultMap标签

  但数据表的列名和pojo对象的属性名不一致的时候,如何将表的列名映射到对象属性上?

  1、起别名

  2、mapUnderScoreToCamelCase=true

  3、ResultMap标签

  ResultMap作用说明:1、字段映射  2、将表的关联关系直接映射为pojo对象的关联关系

  【resultType属性不具备的功能】

猜你喜欢

转载自www.cnblogs.com/cnxx/p/12098902.html