Mybatis 的部分优化及注意事项

2023-10-31

一、加载数据库时可以编写外部文件通过导入的方式获取

(1)外部资源

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?userSSL=true&useUncode=true&characterEncoding=UTF-8
username=root
password=123456
//读取外部资源
<properties resource="db.properties"/>

<dataSource type="POOLED">
                <property name="driver" value= "${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
</dataSource>

二、可以准备多套环境,使用那套时仅需将默认环境环境设置对应环境的ID即可

 三、设置类的别名

(1)方法一(修改类名):

<typeAliases>
        <typeAlias type="com.lisi.pojo.User" alias="User"></typeAlias>
</typeAliases>

(2)方法二(指定包名):

        1、Mybatis会在对应的包名下搜索需要的JavaBean,例如扫描实体类的包,它的默认名就为该类名的首字母缩写。

<typeAliases>
        <package name="com.lisi.pojo"/>
</typeAliases>

         2、(加注解):

        在想修改的类里加注解引号中的就为该类的别名

@Alias("hello")

两种方法的对比:

(1)在实体类比较少的时候使用方法一,反之使用第二种。

(2)对一种的别名可以随意设置,第二种不可以,如果非要该则需要在对应类里面加注解

四、Mapper文件的注册绑定

方法一:

<mapper resource="com/lisi/dao/UserMapper.xml"></mapper>

方法二:

<mapper class="com.lisi.dao.UserMapper">

方法三:

 <package name="com.lisi.dao"/>

方法二和方法三的注意事项:

(1)接口和Mapper配置文件必须同名

(2)接口和Mapper配置文件必须在一个包下

五、当属性名和字段名不一致的如何解决

(1)方法一:别名

<select id="getUserList" resultType="com.lisi.pojo.User">
        select id , name , pwd as password from mybatis.user;
</select>

(2)方法二:resultMap

    <resultMap id="UserMap" type="com.lisi.pojo.User">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="pwd" property="passward"/>
    </resultMap>


    <select id="getUserList" resultMap="UserMap">
        select id , name , pwd as password from mybatis.user;
    </select>

五、分页的实现

(1)Limit实现分页

(2)RowBounds分页

(3)PageHelper插件

六、注解实现CRUD

(1)当有多个参数时所有的参数前面加上 @Param,且@Param中的名称与select中的参数名保持一致。

 @Select("select * from user where id = ${id}")
    
 User getUserById( @Param("id") int id);

设置事务自动提交:

public static SqlSession getSqlSession(){

        return sqlSessionFactory.openSession(true);
}

七、Lombok插件使用

(1)在idea中安装Lombok插件

(2)在项目中导入lombok的jar包

(3)在实体类上加注解

@Date  (无参构造、get、set、tostring、hashcode、equals方法)

@AllArgsConstructor (有参构造)@NoArgsConstructor(无参构造)

优缺点:

(1)简化代码,让开发更加的便捷,大大的节省了开发时间,提高了效率

(2)代码的可读性变差。

八、编写工具类利用UUID.randomUUID().toString()方法生成主键Id

UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法;

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,是由一个十六位的数字组成,表现出来的 形式。

工具类;

package com.lisi.utils;

import org.junit.Test;

import java.util.UUID;

@SuppressWarnings("all")
public class IDutils {
    public static String getId(){
        return UUID.randomUUID().toString().replaceAll("-"," ");
    }
    @Test
    public void test(){
        System.out.println(getId());
        System.out.println(getId());
        System.out.println(getId());
    }
}

测试结果;

九、数据库中字段与Java中属性之间的转换(即数据库中**_***  与Java的驼峰命名法转换)

Mybatis配置文件:

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


如果在数据库中,有一个字段为a_id,那么在javaBean中的属性也必须这样写,写成a_id,这种代码编写方式肯定不符合代码规范。
若开启则: 数据库返回的"order_address"命名字段映射为class的"orderAddress"字段。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis 的部分优化及注意事项 的相关文章

随机推荐

  • 2023高教社数学建模国赛C题 - 蔬菜类商品的自动定价与补货决策(完整参考论文)

    摘要 商超 超市和零售店 在现代经济中扮演着至关重要的角色 然而 它们在蔬菜商品管理中面临着多重挑战 这些挑战包括如何准确预测销售趋势 合理制定价格策略 以及有效制定补货计划等问题 解决这些问题对于商超来说至关重要 因为它们直接影响着销售收
  • 图片自动标注工具调研

    AIDA https imageannotation nds ox ac uk 8443 AIDA 网页标注 支持圆圈和曲线标注 可导出json文件 Annotorious https annotorious github io demos
  • vivado2013.4和modelsim联合仿真

    vivado2013 4和modelsim联合仿真 Hello Panda 最近在做Zynq的项目 曾经尝试使用ISE PlanAhead XPS SDK组合和Vivado SDK来搭建工程 使用中发现前者及其不方便后者有诸多不稳定 近期得
  • 【202203】必应2022年3月壁纸链接合集

    全部壁纸 https wallpaper ddddavid cn subpages page 220329 html 2022 年 3 月份 https cn bing com th id OHR Shamrocks EN US911125
  • JMeter测试websocket

    在一个网站中 很多数据需要即时更新 比如期货交易类的用户资产 在以前 这种功能的实现一般使用http轮询 即客户端用定时任务每隔一段时间向服务器发送查询请求来获取最新值 这种方式的弊端显而易见 有可能造成数据更新不及时 如果前端轮询频率为5
  • C++【STL】

    文章目录 一 基本概念 1 1 为什么有仿函数 这样做有什么好处呢 1 2 仿函数可作为什么 1 3 仿函数的内部状态 1 3 1 pass by value 1 3 3 pass by reference 1 3 4 for each的回
  • java中的输入输出流概念_java输入输出--I/O流的概念和划分

    理解数据流 数据流 Stream 是一组有顺序的 有起点的 有终点的字节集合 是对输入和输出的总称和抽象 一般地 数据流分为 输入流 InputStream 和输出流 OutputStream 输入流只能读不能写 而输出流只能写不能读 通常
  • Openwrt一条命令把整个路由器搞蹦了

    对于rm rf这条命令以前吃过一次亏了 这次又没有长记性 以前本来想删除某个目录下所有的c文件删掉 但是cd到该目录时少进了一级目录 结果啊把其他人忙活里几天的代码全搞没了 我只想说一下 当某种破坏已经造成 并且破坏没有继续 而你又一时不知
  • 彻底关闭 Win10 系统自动更新【四大步骤】

    Windows 10 的自动更新非常顽固 多用户在网上试了各种关闭win10自动更新的方法 刚开始看着好像是关闭更新了 可没过多久系统就又开始自动更新了 今天笔者就来教大家如何彻底关闭win10自动更新 该方法亲测有效 一 禁用 Windo
  • 声学基础:声级计和声压级参数简介​。在频率轴上两个音高之间的距离称为音程。一个8度音程称为倍频程(Octave)。人耳听觉范围(以20Hz为基频)可分为10个倍频程​

    在正式开始前 请让我们先搞清两个概念 音频和声学 实践中 尤其在中文环境下 很多人容易将两者混为一谈 这里必须说明的是 声学 acoustic 通常研究通过空气等介质传播的声音 而 音频 audio 指的是那些直接在缆线或音频元器件中传导的
  • Java-面向对象之(封装+继承+多态)

    文章目录 一 什么是面向对象 二 类和对象 三 this的作用 1 this 成员变量名字 2 this 成员方法名字 3 this 构造方法名字 4 this的特性 四 封装 1 什么是封装 2 访问权限修饰符 3 五 继承 六 多态 1
  • Check It Again: Progressive Visual Question Answering via Visual Entailment

    最近要做关于VQA的项目 要读paper 这里收集了一些有关于这篇paper的资料 资料 导读 SFFAI 130 视觉问答专题 佀庆一 中国科学院信息工程研究所在读博士 2021 Check it again Progressive Vi
  • 中国大学MOOC课程《程序设计入门——C语言》 期末考试编程题

    1 最简分式 10分 题目内容 分数可以表示为 分子 分母 的形式 编写一个程序 要求用户输入一个分数 然后将其约分为最简分式 最简分式是指分子和分母不具有可以约分的成分了 如6 12可以被约分为1 2 当分子大于分母时 不需要表达为整数又
  • python-dataframe如何计算多条件下的重复次数

    data 次数 1 新建用来统计出现次数的列 并且初始值为1 for index in range 0 len data for index2 in range index 1
  • 数字信号处理:重要知识点整理

    文章目录 0 最重要 DFT和FFT的区别 1 连续时间信号频域分析 2 通过离散时间信号的Z变换表达式X z 直接写出时域离散信号 序列 x n 的方法 3 部分分式法的MATLAB实现 求X z 的部分展开式 4 稳定系统 5 求频响特
  • javaFX安装及使用

    一 javaFX下载 Jdk 从 1 8 开始 jdk 自带 JavaFX 到 Jdk 11 开始 jdk 不再内置 JavaFX 所以如果你使用的是高版本的 jdk 在使用 javaFX 的时候就需要先安装 javaFX 并在 idea
  • 在 Python 中打印没有逗号和括号的列表

    文章目录 使用 sep 打印不带逗号和括号的列表 在 Python 中打印不带括号的列表 使用 sep 打印不带括号的列表 Python 中要打印不带逗号和括号的列表 使用 str join 方法将列表连接成一个字符串 如果列表包含数字 将
  • Java源码分析(一)Integer

    当你掌握Java语言到了一定的阶段 或者说已经对Java的常用类和API都使用的行云流水 你会不会有一些思考 比如 这个类是如何设计的 这个方法是怎么实现的 接下来的一系列文章 我们一起学习下Java的一些常见类的源码 本篇 一起分析下In
  • struts2线程安全

    问题 Struts 2 Action对象为每一个请求产生一个实例 因此没有线程安全问题 Spring的Ioc容器管理的bean默认是单实例的 上一次请求处理的状态信息被保持下来 并影响了下一次的请求 实际上就是Action中的类变量被不同的
  • Mybatis 的部分优化及注意事项

    一 加载数据库时可以编写外部文件通过导入的方式获取 1 外部资源 driver com mysql jdbc Driver url jdbc mysql localhost 3306 mybatis userSSL true useUnco