Java-MyBatis

1.基础

  1.1 pom

<dependencies><!--MyBatis核心--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!--MySql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency></dependencies>

  1.2 jdbc.properties

jdbc.driver= com.mysql.jdbc.Driver
jdbc.url= jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
jdbc.username= root
jdbc.password= root

  1.3 核心配置

        mybatis-config文件中的标签必须按照固定的顺序(有的标签可以不写,但顺序一定不能乱): properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="jdbc.properties"/><typeAliases><package name="com.example.mybatis.pojo"/></typeAliases><!--配置连接数据库的环境--><environments default="development"><environment id="development"><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><!--引入映射文件--><mappers><mapper resource="mappers/PaymentMapper.xml"></mapper></mappers>
</configuration>

  1.4 mapper接口

public interface PaymentMapper {List<Payment> selectAll();}

  1.5 映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mybatis.mapper"><select id="selectAll" resultMap="Payment">select * from payment</select></mapper>

  1.6 文件结构

  1.7 测试功能

//读取MyBatis的核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//获取SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);//获取sqlSession,此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务
SqlSession sqlSession = sqlSessionFactory.openSession(true);//通过代理模式创建UserMapper接口的代理实现类对象
PaymentMapper mapper = sqlSession.getMapper(PaymentMapper.class);List<Payment> payments = mapper.selectAll(); 

  1.8 MyBatisX

       安装之后会出现小鸟图标,直接导航和快速生成映射文件

  1.9 log4j日志功能

        1) pom

<!-- log4j日志 -->
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

        2) log4j.xml文件,存放的位置是src/main/resources目录下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /></layout></appender><logger name="java.sql"><level value="debug" /></logger><logger name="org.apache.ibatis"><level value="info" /></logger><root> <level value="debug" /><appender-ref ref="STDOUT" /></root>
</log4j:configuration>

2.查询

  2.1 无参数

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mybatis.mappers.PaymentMapper"><resultMap id="paymentResultMap" type="Payment"><result column="serial_name" property="serialName"></result></resultMap><select id="selectAll" resultMap="paymentResultMap">select * from payment</select></mapper>

  2.2 带参数

    1) 接口

public interface PaymentMapper {List<Payment> selectAll(@Param("id") int id);}

    2) 映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mybatis.mappers.PaymentMapper"><resultMap id="paymentResultMap" type="Payment"><result column="serial_name" property="serialName"></result></resultMap><select id="selectAll" resultMap="paymentResultMap" >select * from payment where id = #{id}</select></mapper>

  2.3 实体参数

    1) 接口

public interface PaymentMapper {List<Payment> selectAll(Payment id);
}

    2) 映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mybatis.mappers.PaymentMapper"><resultMap id="paymentResultMap" type="Payment"><result column="serial_name" property="serialName"></result></resultMap><select id="selectAll" resultMap="paymentResultMap" >select *from paymentwhere id = #{id}and serial_name like concat('%',#{serialName,jdbcType=VARCHAR},'%')and serial_name like "%"#{serialName,jdbcType=VARCHAR}"%"</select></mapper>

  2.4 map参数

    1) 接口

public interface PaymentMapper {List<Payment> selectAll(Map<String,Object> map);
}

    2) 映射文件

        用2.3即可

  2.5 动态条件 if

    1) 接口

        按2.3即可

    2) 映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mybatis.mappers.PaymentMapper"><resultMap id="paymentResultMap" type="Payment"><result column="serial_name" property="serialName"></result></resultMap><select id="selectAll" resultMap="paymentResultMap" >select *from payment<where><if test="serialName != null and serialName != ''">and serial_name like "%"#{serialName,jdbcType=VARCHAR}"%"</if></where></select>
</mapper>

  2.6 动态条件 choose

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mybatis.mappers.PaymentMapper"><resultMap id="paymentResultMap" type="Payment"><result column="serial_name" property="serialName"></result></resultMap><select id="selectAll" resultMap="paymentResultMap" >select *from paymentwhere<choose><when test="serialName != null and serialName != ''">serial_name like "%"#{serialName,jdbcType=VARCHAR}"%"</when><otherwise>1=1</otherwise></choose></select>
</mapper>

3.插入

  3.1 映射文件

<insert id="insert" parameterType="payment"useGeneratedKeys="true"keyProperty="id">insert into payment(serial_name)values (#{serialName})
</insert>

  3.2 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看看京东的接口优化技巧,确实很优雅!!

大家好&#xff0c;最近看到京东云的一位大佬分享的接口优化方案&#xff0c;感觉挺不错的&#xff0c;拿来即用。建议收藏一波或者整理到自己的笔记本中&#xff0c;随时查阅&#xff01; 下面是正文。 一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xf…

10分钟的时间,带你彻底搞懂JavaScript数据类型转换

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 JS数据类型 3种转换类型 ToBoolean ToString ToNumber 对象转原…

23.Oracle11g的UNDO表空间

Oracle的UNDO表空间 一、UNDO表空间概述1、什么是UNDO表空间2、UNDO表空间的作用2.1 提供一致性读2.2 回滚事务2.3 实例恢复 3、UNDO表空间的工作机制 二、UNDO表空间的相关操作1、UNDO表空间的创建2、UNDO表空间的管理 三、Oracle 11g中UNDO表空间的新特性1、UNDO表空间自动管…

token认证机制,基于JWT的Token认证机制实现,安全性的问题

文章目录 token认证机制几种常用的认证机制HTTP Basic AuthOAuthCookie AuthToken AuthToken Auth的优点 基于JWT的Token认证机制实现JWT的组成认证过程登录请求认证 对Token认证的五点认识JWT的JAVA实现 基于JWT的Token认证的安全问题确保验证过程的安全性如何防范XSS Attacks…

循环神经网络RNN

1. 背景 RNN(Recurrent Neural Networks) CNN利用输入中的空间几何结构信息&#xff1b;RNN利用输入数据的序列化特性。 2. SimpleRNN单元 传统多层感知机网络假设所有的输入数据之间相互独立&#xff0c;但这对于序列化数据是不成立的。RNN单元用隐藏状态或记忆引入这种依赖…

CSS特效022:小球抛物线效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

open3d-点云及其操作

open3d提供了一个专门用于点云的数据结构 PointCloud。 class PointCloud(Geometry3D):color # 颜色normals # 法向量points # 点云def __init__(self, *args, **kwargs):"""__init__(*args, **kwargs)Overloaded function.1. __init__(self: open3d.cpu.py…

数据探索:五款免费数据可视化工具概览

数据可视化是解读和传达数据的重要方式&#xff0c;而现在有许多免费的工具可供选择&#xff0c;让您在探索数据时更轻松、更有趣。以下是五款推荐的免费数据可视化工具&#xff1a; Tableau Public&#xff1a; Tableau Public是一款功能强大的可视化工具&#xff0c;能够创建…

宏定义中 ## 和 # 的作用

1. ## 的作用 ## 称为连接符&#xff0c;用来将宏参数或其他的串连接起来。 例1&#xff1a; > #define COMBIN(arg) my##arg则> COMBIN(abc)相当于 myabc 例2&#xff1a;#define CON1(a, b) a##e##b #define CON2(a, b) a##b##00 那么&#xff1a;printf("%f\…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于分布鲁棒优化的广义共享储能容量配置方法》

这个标题涉及到储能系统的容量配置方法&#xff0c;具体而言&#xff0c;是一种基于分布鲁棒优化的广义共享储能容量配置方法。让我们逐步解读&#xff1a; 基于分布鲁棒优化&#xff1a; 这表明该方法采用了一种优化技术&#xff0c;即分布鲁棒优化。分布鲁棒优化通常是指在考…

大数据-之LibrA数据库系统告警处理(ALM-37016 MPPDBServer执行XLOG日志归档命令异常)

告警解释 当集群中的CN实例或者DN实例执行归档命令归档XLOG日志失败时&#xff0c;产生该告警。 在下次执行成功时告警自动恢复。 告警属性 告警ID 告警级别 可自动清除 37016 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生…

c++ 执行系统命令

示例一&#xff1a; #include <cstdlib> // 必须包含这个头文件来使用system()int main() {system("sleep 10"); // 塞执行return 0; }程序会等待10秒后&#xff0c;执行完成使用system("sleep 10 &");可以实现非阻塞执行 示例二&#xff1a; …

11.29 C++ 作业

自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #include <io…

PHP:处理数据库查询数据

注&#xff1a; DB_num_rows($result5)可以替换为mysqli_num_rows($result5) DB_fetch_array($result5)可以替换为mysqli_fetch_assoc($result5) 一、查询单个数据 代码解析 1、SQL语句 查询表www_users中当userid等于变量$_SESSION[UserID]时的depart_code值 $sql &qu…

两台电脑如何快速传输几百G文件,这款文件传输软件真快

当我们需要传输数百GB的文件时&#xff0c;使用传统工具对于大型文件传输来说往往效率低下。这些方法可能需要数小时&#xff0c;甚至数天才能完成传输。然而&#xff0c;现代生活和工作中&#xff0c;我们经常需要以更快速、更高效的方式传输大文件&#xff0c;无论是因为工作…

第72讲:MySQL数据库锁机制剖析:行级锁、间隙锁与临键锁详解及应用指南

文章目录 1.行级锁的概念2.行锁的概念以及基本使用2.1.行锁的概念2.2.常见的SQL语句所对应的行锁类别2.3.行锁的基本使用 3.间隙锁和临键锁的概念以及基本使用3.1.间隙锁和临键锁的概念3.2.间隙锁和临键锁的基本使用 1.行级锁的概念 行级锁指的是&#xff0c;每次操作锁住的是…

11.兔子生崽问题【2023.11.26】

1.问题描述 有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问 第二十个月的兔子对数为多少对&#xff1f; 2.解决思路 3.代码实现 #include<stdio.h> int mai…

儿童绘本故事之乐小鱼的龙舟体验

《乐小鱼的龙舟体验》 Chapter 1: 破浪前行的盛宴在2023年11月26日的清晨&#xff0c;顺德迎来了一场震撼心灵的盛宴——中国龙舟大奖赛。湖面上&#xff0c;龙舟竞渡&#xff0c;破浪前行&#xff0c;为这座城市注入了一份激情的节奏。On the morning of November 26, 2023, …

揭秘近期CSGO市场小幅回暖的真正原因

揭秘近期CSGO市场小幅回暖的真正原因 最近市场小幅度回暖&#xff0c;第一个原因则是到处都在说buff要开租赁了&#xff0c;市场要开始爆燃了。童话听到这些消息实在是绷不住了&#xff0c;出来给大家讲一下自己的看法&#xff0c;大家理性思考一下。 Buff出不出租赁跟市场燃不…

MacBook续命,XCode硬盘占用问题

MacBook续命&#xff0c;XCode硬盘占用问题 参考资料 xcode由于真机运行的时候需要把真机的配置拷贝到 &#xff5e;/Library/Developer/Xcode/iOS\ DeviceSupport 这个文件夹下&#xff0c;这样运行一段时间之后&#xff0c;这个文件夹就大到占满了存储空间&#xff0c;之后…