首页 > 其他 > 详细

MyBatis02课堂笔记

时间:2019-12-25 20:25:22      阅读:86      评论:0      收藏:0      [点我收藏+]

MyBatis标准配置

1.导入jar包

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

技术分享图片

 

 

 3.创建mybatis的sql映射文件和mapper接口

要求:
sql映射文件的namespace值和接口的全类名保持一致。 sql映射文件的sql语句的id值和接口的方法名保持一致。 注意:接口中不要有重载的方法

技术分享图片

 

 

 技术分享图片

4.写测试代码

技术分享图片

MyBatis全局配置文件【了解】

技术分享图片

1.Properties

作用:加载properties配置文件信息

技术分享图片

 

 

 2.Settings标签

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

技术分享图片

 

 

 3.typeAliases

 类型别名处理器:给一个类起别名

技术分享图片

补充:MyBatis自带了一些类型别名,例如java基础学过的基本数据类型、引用数据类型

技术分享图片

 

 

 4. typeHandlers

作用:java的数据类型转换为数据库的数据类型的

技术分享图片

 

 

 5. Environments

作用:Environments里面有多个environment标签,每个environment标签可以设置mybatis的运行环境。

<environments default="development">
      <!--1. 配置数据库连接信息 -->
        <environment id="development">
            <!-- 
              transactionManager:事务管理器
                type:JDBC|MANAGED
                  JDBC:支持事务
                  MANAGED:不支持事务 -->
            <transactionManager type="JDBC" />
            <!-- 
               dataSource:数据源
                 type:UNPOOLED|POOLED|JNDI
                   UNPOOLED:每次使用重新打开或者关闭一个connection连接,不支持数据源,速度有点慢
                   POOLED:支持数据源,适合并发访问的项目
                   JNDI:过时的。 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClass}" />
                <property name="url" value="${jdbc.jdbcUrl}" />
                <property name="username" value="${jdbc.userName}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

6. databaseIdProvider

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

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

在MyBatis全局配置文件中配置

技术分享图片

 

 

 Sql映射文件

技术分享图片

 

 

 7. Mappers

作用:加载Mapper接口或者SQL映射文件

技术分享图片

 

 

 SQL映射文件

技术分享图片

注意点:

1.对于增删改标签,必须提交事务。提交事务的两种方式:
   1.1.手动提交:openSession.commit()
  1.2.自动提交:sqlSessionFactory.openSession(true);
2.只有select必须指定返回值类型,所有标签的parameterType都可以省略。

往数据表中添加数据的时候获取自增逐渐

要求:

1.接口方法的参数必须是一个pojo对象
2.在insert标签设置两个属性:
  useGenerateKeys=true,keyProperty=“pojo对象属性”

技术分享图片

 

 

 技术分享图片

 

 

 Sql片段

 

 

 

 作用:可以做sql语句重用

技术分享图片

 

 

 技术分享图片

 

 

 MyBatis支持基于注解的sql语句

@Select(value="select * from book where bid = #{bid}")
public Book selectOne(int bid);
@Insert(value="insert into book(bname,author,price,type) values(#{bname},#{author},#{price},#{type});")
public void insert(Book book);
@Delete(value="DELETE FROM book WHERE bid=#{bid}")
public void delete(int bid);

如何在sql映射文件中取mapper接口中的参数

 

1.一个普通参数

 

  #{随便写}

技术分享图片

 

 

 技术分享图片

 

2.多个普通参数

 

  #{param注解的value值}

方式一:

技术分享图片

技术分享图片

技术分享图片

方式二:

技术分享图片

 

 

 技术分享图片

 技术分享图片

输出:

技术分享图片

 

 

 3.参数是一个pojo对象

   #{pojo对象的属性名}

4.是一个map对象

 

  #{map中键值对的key}

技术分享图片

 

技术分享图片

 

 

技术分享图片

输出:

技术分享图片

 

 

 5.参数是一个List、Collection

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

技术分享图片

 

 技术分享图片

 

 

 

技术分享图片

技术分享图片

 

 

 输出:

技术分享图片

 

 

 6.参数是一个数组

  #{array[下标]}

技术分享图片

技术分享图片

 技术分享图片

7.复杂参数

技术分享图片

 

 

 技术分享图片

 

 

 技术分享图片

输出:

技术分享图片

 各种各样的返回值类型

 技术分享图片

 

 

  #{}与${}的区别【面试】

#{}:采用占位符?,以预编译的方式设置参数的,类似于javaweb部分的preparestatement对象,SQL安全的,不存在sql注入问题。
${}:直接将参数设置到sql语句中,类似于javaweb部分的statement对象,存在SQL注入问题。
在有些特殊情况下,我们必须使用${}.例如:表名、like模糊查询、排序字段。

 ResultMap标签

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

1.起别名

2.mapUnderScoreToCamelCase=true

技术分享图片

3.ResultMap标签

 技术分享图片

ResultMap作用说明:

  1. 字段映射
  2. 将表的关联关系直接映射为pojo对象的关联关系【resultType属性不具备的功能】

MyBatis02课堂笔记

原文:https://www.cnblogs.com/bai3535/p/12098596.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!