Mybatis笔记之配置文件

发布时间:2022-06-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Mybatis笔记之配置文件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Mybatis笔记之配置文件

  1. 接口式编程, 原生 : DAO ===> DaoImpl Mybatis: Mapper ===> xxMapper.xml

  2. SqlSession 代表和数据库的一次会话, 使用结束必须关闭

  3. SqlSession 与 Connection 一样 线程不安全, 导致线程冲突 每次使用都应该创建新的对象

  4. xxxmapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象 (将接口与xml文件绑定) xxxMapper mapper = sqlSession.getMapper(xxxmapper.class)

  5. 两个重要配置文件

    • mybatis全局配置文件:包含数据库连接池信息,事务管理器信息等,系统运行环境

    • sql映射文件:保存了sql语句映射信息(返回结果信息,sql语句, 占位符参数) , 将接口方法与 sql语句绑定起来,将sql抽取出来

具体代码点此转跳

2. 配置文件标签

 

Mybatis笔记之配置文件

mybatis全局配置文件标签:配置文件在  Configuration()里面可以看到

标签顺序(不能乱)

Mybatis笔记之配置文件

2.1 配置文件

properties : 引入来自外部的 properties配置文件的内容

 <properties resource="dbconfig.properties"></properties>

属性

  • resource: 引入类路径下的资源

  • url: 引入磁盘路径/网络路径的资源

2.2 设置

设置Mybatis运行时行为settings:

  • mapUnderscoreToCamelCase :是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。

    属性: true/false

2.3 别名处理器

别名处理器 typeAliases: 为 java类型起别名

  • 为每个类起别名<typeAlias type="类型" alias= "完整别名"> 属性

    • type : 指定要起别名的类型全类名,默认别名就是类名小写 user

    • alias: 自定义别名

  • 批量起别名 <package name="包全路径"/> 为某个包下所有类批量起别名 属性

    • name: 指定当前包下的所有后代包每个类都起一个默认别名(类名小写)别名不区分大小写

    • 批量起别名情况下出现别名冲突: 在类中设置注解 @Alias("...") 为类型指定新的别名

别名 映射的类型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string String
byte Byte
long Long
short Short
int Integer
integer Integer
double Double
float Float
boolean Boolean
date Date
decimal BigDecimal
bigdecimal BigDecimal
object Object
map Map
hashmap HashMap
list List
arraylist ArrayList
collection Collection
iterator Iterator

2.4 类型处理器

类型处理器<typeHandlers> :

2.5 环境处理器

环境处理器 <environments default: "id"> 根据 enviroment 的 id 快速切换环境

id : 标识不同的环境 , 可以在 environments default标签中设置 不同的id , 快速切换

2.5.1 environment

<environment>: 配置一个具体的环境信息 必须有 以下两个标签:

  • 事务管理器 <transactionMangager type = "">

    type: 表示事务管理器类型 【JDBC事务控制方式 | Managed(服务器容器方式)】两种

    • JDBC(JdbcTransactionFactory) jdbc事务控制方式

    • Managed(ManagedTransactionFactory) 服务器容器方式

    • 自定义事务管理器 : 实现 接口 TransactionFactory

  • 数据源类型 <dataSource type=" "> : type : 表示数据源

    • Unpooled(UnpooledDataSourceFactory) : 不使用连接池

    • pooled(pooledDataSourceFactory): 使用连接池

    • jndi(JndiDataSourceFactory):Jndi方式

    • 自定义数据源:实现接口 DataSourceFactory

         <environments default="oracle_development"> <!-- 切换到oracle开发环境 -->
             <environment id="mysql_development">
                 <transactionManager type="JDBC"/>
                 <dataSource type="POOLED">
                  <!-- 数据库连接信息 -->
                 <property name="driver" value="${driver}"/>
                 <property name="url" value="${url}"/>
                 <property name="username" value="${username}"/>
                 <property name="password" value="${password}"/>
             </dataSource>
         </environment>
 ​
         <!--oracle开发环境-->
         <environment id="oracle_development">
             <transactionManager type="JDBC"/>
             <dataSource type="POOLED">
                 <property name="driver" value="${driver}"/>
                 <property name="url" value="${url}"/>
                 <property name="username" value="${username}"/>
                 <property name="password" value="${password}"/>
             </dataSource>
         </environment>
     </environments>

2.6 数据库厂商

配置数据库厂商<databaseIdProvider type = "DB_vendor"> type: 表示数据库厂商

🔴需要在 xxxMapper.xml 的 select 等 sql标签中 设置 databaseId = " "

     <select id="getUser" resultType="user" databaseId="mysql">
         select * from jdbc_learn.user where id = #{id}
     </select>

🚀 如何有两个注入的select 标签 , 一个带有 databaseId 一个没有databaseID , 则没有DatabaseId的select标签将会被舍弃

  • 得到数据厂商的标识type = "DB_vendor" : VendorDatabaseIdProvider mybatis根据数据库厂商执行不同的SQL【驱动自带

  • 设置数据库厂商别名<property name = "MySQL" value = "mysql">

    • 【需要在Mapper.xml中设置 databaseId = "..."】

     <databaseIdProvider type="DB_VENDOR">
         <property name="MySQL" value="mysql"/>
         <property name="Oracle" value="oracle"/>
     </databaseIdProvider>

 

2.7 Mappers标签

作用:将 sql映射 注册到 全局配置中

  1. 引用类路径下的映射文件:resource = "xxx.xml"

  1. 引用磁盘/网路路径下的映射文件: url = "xxx.xml"

  1. 引用接口class = ""

    • 👺 注意事项1: 接口文件 与 映射.xml 文件 同名

    • 👹 注意事项2: 接口文件与映射文件 在同一个包下

  1. 基于注解注册sql映射xxxMapper 文件

🔴 重要,复杂的DAO接口 ===> SQL映射文件

🔵 不重要,简单的DAO接口 ===> 注解方式

  1. 批量注册<package name = "接口的报名">

    • 作用: 将同个包下的 所有的 同名的 xml 文件和接口sql映射 注册到Mybatis中

    • 👹注意事项:接口文件与映射文件 在同一个包下

 <!--    每个Mapper.xml都需要在Mybatis核心配置文件中注册  -->
 <mappers>
      <mapper resource="com/lzw/dao/UserMapper.xml"/>
     <mapper url = "....UserMapper.xml"/>
     <mapper class = "接口路径"/>
     <package name="com.lzw.dao"/>
 </mappers>
 /* *
  * 基于注解注册 Mapper sql映射文件
  * @Author zhongweiLee
  * @Description
  * @Date 20:47 2022/4/13
  * @ParamsType
  * @ParamsName
  * @return
  **/
 public interface UserMapperAnnotation {
     @Select("select * from user where id = #{id}")
     public User getUserById(Integer id);
 }
 /*-----------------------------------------------------------------------*/
     @Test
     /* *
      * 使用注解注册sql映射文件 测试
      * @Author zhongweiLee
      * @Description
      * @Date 14:40 2022/4/13
      * @ParamsType []
      * @ParamsName []
      * @return void
      **/
     public void test2(){
         /* ***
          *
          * 1. 获取sqlSessionFactory对象
          * 2. 获取sqlSession
          * 3. sqlSession.getMapper(接口.class) 获取接口实现类对象
          *    会为接口自动创建一个代理对象,代理对象执行增删改查操作
          * 4. 调用接口方法 mapper.getUser()方法
          */
         try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
 //            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
             //使用注解注册sql映射文件 测试
             UserMapperAnnotation mapper = sqlSession.getMapper(UserMapperAnnotation.class);
             System.out.println(mapper.getClass());//获取当前mapper所属类
             User user = mapper.getUserById(1);
             System.out.println(user);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 ​

 

 

 

 

 

脚本宝典总结

以上是脚本宝典为你收集整理的Mybatis笔记之配置文件全部内容,希望文章能够帮你解决Mybatis笔记之配置文件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:数据库