Mybatis-文件

简单介绍下Maven项目中与Mybatis相关的各文件的作用。

目录

  1. pom.xml
  2. mybatis-config.xml
  3. xxxMapper.xml
  4. xxxMapper.java
  5. xxxDao.java
  6. xxDaoImpl.java

介绍

1. pom.xml

这个了解maven的肯定知道,在这里主要是为了导入mybatis&jdbc依赖。
        <!--jdbc-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>

2. mybatis-config.xml

这个文件是一个关键文件,负责整个项目中Mybatis的配置。
其标签作用很丰富,如数据库的连接、内外部参数的引入、x0xxMapper.xml的使用、命名规则的转换、缓存设置等。现在介绍其中最重要的几个:

2.1 【标签】configuration

根标签

2.2 【标签】properties

属性变量集合,相当于本文件中定义/存放属性变量的位置

2.2.1 【属性】 resource 用于引入外部文件中的属性变量集合

mybatis-config.xml 中引入

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

jdbc.properties 中原始数据

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssmdemo?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true
jdbc.username=root
jdbc.password=root

在mybatis-config.xml 中使用

<property name="driver" value="${jdbc.driverClass}"/>

2.2.2 【标签】 property:定义属性变量

<properties>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-110?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </properties>

ps:这种写法是直接在mybatis-config.xml文件中定义属性变量,与利用properties的resource导入属性变量效果一样

2.3 【标签】environments ❗️❗️❗️ 重要

一个工程会有很多模式,比如,开发模式、测试模式和生产模式。不同模式运行的环境是不同的,mybatis运行环境也可能有所差异,因此我们在配置文件mybatis-config.xml的environments标签中也会有不同运行环境相应的配置。

2.3.1. 【标签】environment:

具体某种运行环境,一下为某测试test环境:

<environment id="test">
            <transactionManager type="jdbc"/>
            <dataSource type="POOLED">
            .......
            </dataSource>
</environment>
2.3.1.1 【属性】 id

用于唯一标定一个environment

2.3.1.2 【标签】 transactionManager标签

事务管理标签

2.3.1.2.1 【属性】 type

用于标定事务的属性,不仅只有jdbc类型,还有其他类型,详情可以参考这里

2.3.1.3 【标签】 dataSource
<dataSource type="POOLED">
            <!-- 注意${jdbc.xxx}调用的就是2.2.1.1 中jdbc.properties文件中的属性变量 -->
                <property name="driver" value="${jdbc.driverClass}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
</dataSource>
2.3.1.3.2 【属性】 type

标定了数据源类型,有以下三种,详情可以参考这里
unpooled:非池型数据源
pooled:池型数据源
jndi:托管型

2.3.1.3.1 【标签】 property

具体存储属性变量 用name-value形式存储
a. 【属性】 name
b. 【属性】 value

2.4 【标签】 mappers

mapper标签的集合

2.4.1 【标签】 mapper

与 存储sql的文件xxxMapper.xml 文件关联,如果不关联则这个xxxMapper.xml 无法被发现

2.4.1.1 【属性】 resource

xxxMapper.xml的位置

2.5 【标签】 typeAliases

设置别名,用于速断全限定名长度

<typeAliases>
    <typeAlias alias="name" type="org.ppp.user.name">
<typeAliases/>

2.6 【标签】 settings

用于设置一些mybatis属性

<!-- 开启驼峰匹配 -->
<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

3. application-xxx.properties

在springboot项目中,我们可以采取注解的方式实现很多查询,不再需要写mybatis-config.xml了,甚至不再需要写xxxMapper.xml了。
这部分推荐一个案例:关于Springboot-Mybatis无配置文件注解版的思考

4. xxxMapper.xml

这部分强烈推荐看这里 Mybatis教程-实战看这一篇就够了。这部分的论述,我很多是直接✍鸟哥的,在此对原作者鸟哥表示🙇‍!

4.1 CRUD标签

<select id="queryUserById" resultType="com.zpc.mybatis.pojo.User">
    select * from user where id=${id}
    <!-- 相较于${id},#{id}会加上双引号,可以防止sql注入 -->
</select>
  1. select

select中的几个属性说明:
id属性:当前名称空间下的statement的唯一标识。必须。要求id和mapper接口中的方法的名字一致。
resultType:将结果集映射为java的对象类型。必须(和 resultMap 二选一)
parameterType:传入参数类型。可以省略

  1. insert

insert 的几个属性说明:
id:唯一标识,随便写,在同一个命名空间下保持唯一,使用动态代理之后要求和方法名保持一致
parameterType:参数的类型,使用动态代理之后和方法的参数类型一致
useGeneratedKeys:开启主键回写
keyColumn:指定数据库的主键
keyProperty:主键对应的pojo属性名
标签内部:具体的sql语句。

  1. update

id属性:当前名称空间下的statement的唯一标识(必须属性);
parameterType:传入的参数类型,可以省略。
标签内部:具体的sql语句。

  1. delete

delete 的几个属性说明:
id属性:当前名称空间下的statement的唯一标识(必须属性);
parameterType:传入的参数类型,可以省略。
标签内部:具体的sql语句。

4.2 resultMap



4.3 sql片段

过于繁琐,在此略过

5. xxxMapper.java

用于调用
FireconCartMapper.java文件

public interface FireconCartMapper extends Mapper<FireconCart>{
    //可以采用注解的方式来执行Sql
    @Delete({"<script> delete from firecon_cart where account = #{account}; </script>"})
    int deleteThis(@Param("account")String account);
    
    //也可以关联FireconCartMapper.xml文件
    public List<Map> FindFireconCart(String account);
}

FireconCartMapper.xml文件

<select id="FindFireconCart" resultMap="CartInfo">
		SELECT * from firecon_cart where account = #{account}
</select>

6. xxxDao.java

6. xxDaoImpl.java