项目管理与SSM框架 MyBatis(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 项目管理与SSM框架 MyBatis(三)

四、MyBatis配置文件

MyBatis配置文件结构:

-configuration

   -properties(属性)

       -property

   -settings(全局配置参数)

       -setting

   -plugins(插件)

       -plugin

   -typeAliases(别名)

       -typeAliase

       -package

   -environments(环境)

       -environment

           -transactionManager(事务管理)

           -dataSource(数据源)

   -mappers(映射器)

       -mapper

       -package

4.1

属性值定义。properties标签中可以定义属性值,也可以引入外部配置文件。无论是内部定义还是外部引入,都可以使用${name}获取值。

例如:我们可以将数据源配置写到外部的db.properties中,再使用properties标签引入外部配置文件,这样可以做到动态配置数据源。

1、编写db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

2、在配置文件中引入db.properties

<!--数据库文件-->
    <properties resource="db.properties"></properties>
    <!--配置数据源-->
    <environments default="mysql">
        <environment id="mysql">
            <!--事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

4.2

是配置MyBatis运行时的一些行为的,例如缓存、延迟加载、命名规则等一系列控制性参数。后期我们会使用该标签配置缓存和延迟加载等。

在配置文件中开启二级缓存:

<settings>
  <setting name="cacheEnabled" value="true"/>
</settings>

开启N+1查询的延迟加载:

<settings>
    <setting name="lazyLoadingEnabled" value="true"/>
</settings>

4.3


MyBatis对常用类有默认别名支持,比如java.lang.Stirng的别名为string。除此之外,我们也可以使用设置自定义别名。

为一个类配置别名

<typeAliases>
    <typeAlias type="全类名" alias="别名"></typeAlias>
</typeAliases>

1、配置文件

<!--配置别名-->
    <typeAliases>
        <typeAlias type="com.zj.pojo.User" alias="User"></typeAlias>
    </typeAliases>

2、映射文件

<!--查询全部-->
       <select id="selectAllUser" resultType="User">
            SELECT * FROM user;
       </select>

为一个所有包下的所有类配置别名

<typeAliases>
  <package name="包名"></package>
</typeAliases>

此时该包下的所有类都有了别名,别名省略包名,和类名相同。

1、配置文件

<!--配置别名-->
    <typeAliases>
        <package name="com.zj.pojo"/>
    </typeAliases>

2、映射文件

<!--分页查询2-->
    <select id="getUserByPage2" resultType="User" parameterType="PageQuery">
        SELECT * FROM user LIMIT #{startIndex},#{pageSize}
    </select>

4.4

是配置MyBatis插件的。插件可以增强MyBatis功能,比如进行sql增强,打印日志,异常处理等。使用该标签配置分页插件。

<plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 设置数据库类型-->
            <property name="helperDialect" value="mysql"/>
        </plugin>
    </plugins>

4.5

可以为MyBatis配置数据环境。

事务管理

<environments default="mysql">
  <environment id="mysql">
    <!-- JDBC:使用JDBC的提交和回滚 MANAGED:不做事务处理-->
    <transactionManager type="JDBC"></transactionManager>
  </environment>
</environments>

连接池

<environments default="mysql">
  <environment id="mysql">
    <transactionManager type="JDBC"></transactionManager>
    <!-- 连接池设置 -->
    <dataSource type="POOLED">
      <!-- 数据源设置... -->
    </dataSource>
  </environment>
</environments>

dataSource的type属性:

  • POOLED:使用连接池管理连接,使用MyBatis自带的连接池。
  • UNPOOLED:不使用连接池,直接由JDBC连接。
  • JNDI:由JAVAEE服务器管理连接,如果使用Tomcat作为服务器则使用Tomcat自带的连接池管理。

4.6

用于注册映射文件或持久层接口,只有注册的映射文件才能使用,共有四种方式都可以完成注册:

1、使用相对路径注册映射文件

<mappers>
        <mapper resource="com/zj/mapper/UserMapper.xml"/>
    </mappers>

2、使用绝对路径注册映射文件

<mappers>
      <mapper url="D:\Java\code\learnMyBatis\src\main\resources\com\zj\mapper\UserMapper.xml"></mapper>
    </mappers>

3、注册持久层接口(映射文件和持久层路径一样,文件名也一样)

<!--注册映射文件(项目加载的时候先加载的是核心配置文件)-->
    <mappers>
        <mapper class="com.zj.mapper.UserMapper"/>
    </mappers>

4、注册一个包下的所有持久层接口

<!--注册映射文件(项目加载的时候先加载的是核心配置文件)-->
    <mappers>
        <package name="com.zj.mapper"/>
    </mappers>

五、MyBatis映射文件


5.1

标签的作用的自定义映射关系。

MyBatis可以将数据库结果集封装到对象中,是因为结果集的列名和对象属性名相同,当POJO属性名和数据库列名不一致时,MyBatis无法自动完成映射关系。

此时有两种解决方案:

  1. Sql语句的查询字段起与POJO属性相同的别名。
<!--查询全部老师-->
    <select id="findAllTeachers" resultType="Teacher">
        SELECT tid,tname as teacherName FROM teacher;
    </select>

  2、自定义映射关系

  • 在映射文件中,使用自定义映射关系
  • 标签中,使用resultMap属性代替resultType属性,使用自定义映射关系。5.2 、用来定义可重用的Sql片段,通过引入该片段。如:Sql语句的查询字段起与POJO属性相同的别名,该Sql片段就可以重用。5.3 特殊字符处理在Mybatis映射文件中尽量不要使用一些特殊字符,如:<,>等。我们可以使用符号的实体来表示:六、MyBatis动态Sql6.1  一个查询的方法的Sql语句不一定是固定的。比如电商网站的查询商品,用户使用不同条件查询,Sql语句就会添加不同的查询条件。此时就需要在方法中使用动态Sql语句。标签内的Sql片段在满足条件后才会添加,用法为:。例如:根据不同条件查询用户:1、持久层接口添加方法2、映射文件3、测试if中的条件不能使用&&/||,而应该使用and/orif中的条件可以直接通过属性名获取参数POJO的属性值,并且该值可以调用方法。where后为什么要加1=1?任意条件都可能拼接到Sql中。如果有多个条件,从第二个条件开始前都需要加And关键字。加上1=1这个永久成立的条件,就不需要考虑后面的条件哪个是第一个条件,后面的条件前都加And关键字即可。 6.2 、可以代替sql中的where 1=1 和第一个and,更符合程序员的开发习惯,使用后的映射文件如下:标签用在update语句中。借助,可以只对有具体值的字段进行更新。会自动添加set关键字,并去掉最后一个if语句中多余的逗号。6.3 、、chose:父标签when:相当于if...else if,只要有一个条件成立,其它的都不判断了otherwise:相当于else,若所有条件都不成立,则执行otherwisewhen至少设置一个,otherwise最多设置一个1、持久层2、映射文件6.4 foreach遍历数组类似JAVA中的for循环,可以遍历集合或数组。有如下属性:collection:遍历的对象类型open:开始的sql语句close:结束的sql语句separator:遍历每项间的分隔符item:表示本次遍历获取的元素,遍历List、Set、数组时表示每项元素,遍历map时表示键值对的值。index:遍历List、数组时表示遍历的索引,遍历map时表示键值对的键。我们使用遍历数组进行批量删除。 1、持久层接口添加方法2、映射文件3、测试6.5 foreach遍历Collection遍历List和Set的方法是一样的,我们使用遍历List进行批量添加。1、持久层接口添加方法2、映射文件3、测试 6.6 foreach遍历Map我们使用遍历Map进行多条件查询。1、持久层接口添加方法2、映射文件3、测试
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
2月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
50 1
持久层框架MyBatisPlus
|
3月前
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
93 0
|
5月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
62 0
|
5月前
|
SQL Java 数据库连接
【Java 第十三篇章】MyBatis 框架介绍
MyBatis 原名 iBATIS,2001 年由 Clinton Begin 创建,以其简易灵活著称。2010 年更名以重塑品牌形象。MyBatis 通过 SQL 映射文件将 SQL 语句与 Java 代码分离,支持编写原生 SQL 并与方法映射。具备对象关系映射功能,简化数据库记录处理。支持动态 SQL 构建,灵活应对不同查询条件。内置缓存机制,提升查询效率。相比全功能 ORM,MyBatis 提供更高 SQL 控制度和更好的维护性,并易于与 Spring 等框架集成,广泛应用于 Java 数据访问层。
47 0
|
3月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
163 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
92 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
3月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
634 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
3月前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
41 0
mybatis使用二:springboot 整合 mybatis,创建开发环境