MyBatis02

MyBatis标准配置

1.导入jar包

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

MyBatis02_第1张图片

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

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

 MyBatis02_第2张图片

4.写测试代码

MyBatis02_第3张图片

MyBatis全局配置文件【了解】

MyBatis02_第4张图片

1.Properties

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

MyBatis02_第5张图片

 2.Settings标签

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

 3.typeAliases

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

MyBatis02_第6张图片

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

MyBatis02_第7张图片

  4. typeHandlers

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

MyBatis02_第8张图片

 5. Environments

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

default="development">
      
        "development">
            
            "JDBC" />
            
            "POOLED">
                "driver" value="${jdbc.driverClass}" />
                "url" value="${jdbc.jdbcUrl}" />
                "username" value="${jdbc.userName}" />
                "password" value="${jdbc.password}" />
            
        
    

6. databaseIdProvider

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

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

在MyBatis全局配置文件中配置

MyBatis02_第9张图片

 

 

 Sql映射文件

 7. Mappers

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

MyBatis02_第10张图片

 SQL映射文件

MyBatis02_第11张图片

注意点:

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}

 

 MyBatis02_第12张图片

输出:

 5.参数是一个List、Collection

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

 

 

 输出:

 6.参数是一个数组

  #{array[下标]}

 

7.复杂参数

 

 MyBatis02_第13张图片

输出:

 各种各样的返回值类型

 MyBatis02_第14张图片

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

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

 ResultMap标签

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

1.起别名

2.mapUnderScoreToCamelCase=true

3.ResultMap标签

 MyBatis02_第15张图片

ResultMap作用说明:

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

你可能感兴趣的:(MyBatis02)