Mybatis 基础使用

本文详细介绍了MyBatis框架的使用,包括注解方式和XML配置文件的编写。重点讲解了MyBatis Generator的配置与使用,如何自动生成Mapper接口、实体类和XML映射文件。同时提醒在使用where标签时要注意注释可能影响SQL生成的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,目前数据层框架比较火的有 jpa 和 mybatis,但是mybatis 是国内公司使用最多的,因此mybatis 必学

 

2,使用 mybatis 使用分为两种 第一种 注解 第二种 xml 文件

注解

@Mapper
public interface Test {
    @Select("select * from blog where id=#{id}")
    Blog findById(@Param("id") String id);
}

介绍 xml 格式之前需要先介绍几个插件

mybatis-generator  代码生成器,根据表生成基础的xml 接口类,实体类

mybatis-plugin      idea插件,可以快速从接口类 跳转到 xml

mybatis-pageHelper 分页插件

xml 格式一般不会自己手动创建文件,都是使用 mybatis-generator 生成一个基础模板,再自己修改,可自动生成 Mapper,实体类,xml文件

mybatis-generator 的使用

1再pom文件<build> <plugins>中添加

 <!-- mybatis generator 自动生成代码插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.19</version>
                    </dependency>
                </dependencies>
            </plugin>

2,编写generatorConfig.xml 文件,位置与pom中一致

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!-- 指定数据库连接驱动jara地址 驱动jar包路径 -->
<!--    <classPathEntry location="D:\javaConfig\maven\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar" />-->

<!--    <classPathEntry location="C:\Users\WenHaoZhang\Desktop\study\Java\mysql-connector-java-5.1.38.jar" />-->
    <!-- 一个数据库一个context -->
    <context id="Mysql" targetRuntime="MyBatis3">
        <!-- 生成的pojo,将implements Serializable -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
        <!--生成mapper.xml时覆盖原文件-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
        <!-- 注释 注意顺序不能乱,否则会报错-->
        <commentGenerator>
            <property name="suppressAllComments" value="true" /><!-- 是否取消注释 -->
            <property name="suppressDate" value="true" />  <!--是否生成注释代时间戳 -->
        </commentGenerator>
        <!-- 数据库链接URL、用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://182.92.208.158:3306/myblog?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!-- 类型转换 -->
        <javaTypeResolver>
            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL
                和 NUMERIC 类型解析为java.math.BigDecimal -->
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 生成model模型,对应的包路径,以及文件存放路径(targetProject),targetProject可以指定具体的路径,如./src/main/java,
            也可以使用“MAVEN”来自动生成,这样生成的代码会在target/generatord-source目录下 -->
        <javaModelGenerator targetPackage="com.waitforflowers.myblog.pojo"
                            targetProject="src/main/java">
            <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->
            <property name="enableSubPackages" value="true" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!--对应的mapper.xml文件 -->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- 对应的Mapper接口类文件 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.waitforflowers.myblog.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 列出要生成代码的所有表,这里配置的是不生成Example文件 -->
        <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample
                   是否生成 example类   -->
        <table tableName="blog" domainObjectName="Blog"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>

最后 执行 mvn mybatis-generator:generate 命令就好了 当然在idea中也可以用下图配置 配置完可以和运行项目一样运行该脚本

手写的话需要创建Mapper 文件 xml文件,附上xml文件前缀

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
<!--内容-->
</mapper>

注意--巨坑:

mybatis 使用where标签时如果存在注释会导致 and不去除,如下,需要注意

<select id="test" resultType="testDTO">
    select * from test
    <where>
        --这是一个注释
        <if test="col1 != null and col1!= '' ">
            and col1 = #{col1}
        </if>
    </where>
</select>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值