当前位置: 首页 > article >正文

mybatis(78/134)

前天学了很多,关于java的反射机制,其实跳过了new对象,然后底层生成了字节码,创建了对应的编码。手搓了一遍源码,还是比较复杂的。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

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

    <!--起别名,这里是对于com.mybatis.pojo中就是dao类中的起别名,对于下面这个格式的默认值是包名,不区分大小写-->
    <typeAliases>
        <package name="com.mybatis.pojo"/>
    </typeAliases>


    <environments default="development">
        <!--default指定默认使用的环境-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>

    <mappers>
            <!--这个是对映射文件匹配对应的接口,一般接口是在mapper中两者xml文件的取名要与mapper    相同,而且需要将xml放在resours文件下,创建相同的目录.
    在resources目录下创建格式是:com/mybatis/mapper        
        -->
        <package name="com.mybatis.mapper"/>
    </mappers>

</configuration>

对于多表联立,假设2表需要1表的主键(外键),但是原本是自增字段,那么就需要在标签中设

 useGeneratedKeys="true" keyProperty="id",来返回对应需要的主键如:id

 <insert id="insertCarUserGeneratedKeys" useGeneratedKeys="true" keyProperty="id">
        insert into t_car values (null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})
    </insert>

对于#{}与${}的区别

  <delete id="deleteBatch">
        delete
        from t_car
        where id in (${ids})
    <!--#{}与${}的区别,对于前者会原来出现的地方先使用?进行占位然后将对应的数据类型的值加入到原本的位置中去,
             如果是字符串就会带'',而后者就是简单的先拼接后编译,会有sql注入风险,使用的statement,它会将原先的值完整
             的输入到该位置,一般是使用关键字或者需要将东西原封不动的输入才使用后者
    -->
    <!--
    '?'单引号中的占位符号不会被识别,所以像是模糊查询这种的有四种解决方法


    -->

    </delete>


http://www.kler.cn/a/521108.html

相关文章:

  • PyCharm介绍
  • 第05章 12 可视化热量流线图一例
  • Brightness Controller-源码记录
  • 【Linux】gdb——Linux调试器
  • 使用 Vue 3 的 watchEffect 和 watch 进行响应式监视
  • 数据结构与算法分析:专题内容——人工智能中的寻路7之AlphaBeta(代码详解)
  • 使用QSqlQueryModel创建交替背景色的表格模型
  • 技术速递|.NET 9 中的 OpenAPI 文档生成
  • 【大数据】数据治理浅析
  • 想品客老师的第七天:闭包和作用域
  • 代码随想录算法训练营day30(补0123)
  • 基于 Ansible 的 Linux 服务器自动化运维实战
  • Java Web-Cookie与Session
  • 前端性能优化指标 - DCL(触发时机、脚本对 DCL 的影响、CSS 对 DCL 的影响)
  • RAG:实现基于本地知识库结合大模型生成(LangChain4j快速入门#1)
  • 【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
  • ollama使用详解
  • JavaScript 的 Promise 对象和 Promise.all 方法的使用
  • 验证二叉搜索树(力扣98)
  • Pandas基础03(数据的合并操作/concat()/append()/merge())
  • 第五节 MATLAB命令
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍Transformer相较于CNN的优缺点?
  • WPF基础 | WPF 常用控件实战:Button、TextBox 等的基础应用
  • 对比OpenAI的AI智能体Operator和智谱的GLM-PC,它们有哪些不同?
  • MongoDB的事务机制
  • 智慧园区解决方案助力数字化转型与智能生态系统建设