11月1日 mybatis入门

java程序与数据库对接端: jdbc

  • 步骤固定, 代码固定, 大量重复代码

  • SQL写在代码中, 修改sql,需要重新编译代码, 动态sql, 手动拼接

  • 结果集与java对象转换,

java程序与前端对接端: javaWeb

  • 手动获取请求参数, 需要手动进行数据转换

  • 一个请求对应一个Servlet,造成Servlet类暴增

  • 前后台分离, 无法使用域对象进行数据传递, 响应对象输出流把java对象变成字符串(json)写给js

Mybatis简介

他的前生是iBatis

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

简化jdbc, 底层jdbc

Mybatis的执行流程

Mybatis的入门:

  1. 添加mybtais的依赖, mysql驱动

 <!--添加依赖--><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.10</version></dependency>
​<!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>
​<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
​
  1. 在项目中添加mybatis的全局配置文件: 官方推荐: mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--environments: 环境复数default: 默认使用那个环境,  environment的id值--><environments default="mysql"><!--environment:具体的数据源环境id: 唯一标志符-->
<!--        <environment id="oracle">-->
<!--            <transactionManager type="JDBC"/>-->
<!--            <dataSource type="POOLED">-->
<!--                <property name="driver" value="${driver}"/>-->
<!--                <property name="url" value="${url}"/>-->
<!--                <property name="username" value="${username}"/>-->
<!--                <property name="password" value="${password}"/>-->
<!--            </dataSource>-->
<!--        </environment>-->
​<environment id="mysql"><!--transactionManager: 事务管理:1. JDBC: 使用jdbc的事务, 需要手动提交 commit/回滚事务 rollback2.MANAGED: 事务交给第三方管理, 比如后面交给Spring管理--><transactionManager type="JDBC"/><!--dataSource: 数据源: 连接那个数据库type: 数据源的类型:1. POOLED: 池 带连接池的数据库, 效率高2. JNDI:  数据源配置第三方中, 方便多个项目共享数据源3.UNPOOLED: 不带连接池数据源--><dataSource type="POOLED"><!--数据库四大参数--><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false" /><property name="username" value="root" /><property name="password" value="123" /></dataSource></environment></environments></configuration>

参考对应配置类: org.apache.ibatis.session.Configuration

  1. 编写实体类, 编写测试

  1. 编写sql映射文件,

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
​<!--编写sql语句查询的Statement属性:  id: 唯一标识符parameterType: 输入参数类型, 如果是简单类型,可以省略,如果自定义类类型不能省略resultType: 输出参数类型: 把结果集的记录转换为java的那个类的对象mybatis中占位符: #{名字} 底层变成 ? 推荐   ${名字} sql拼接1. 名字: 如果输入参数类型是简单类型,名字任意2. 如果输入参数类型是自定义类类型, 名字对应类的属性名--><select id="selectById" parameterType="int" resultType="com.fs.User">select * from tb_userinfo where id = #{id}</select>
​
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="UserDao"><!--编写sql语句查询的Statement 属性:id :唯一标识符mybatis中占位符:#{名字}底层变成? ${名字} sql拼接1.名字:如果输入参数类型是简单类型,名字任意2.如果输入参数类型是自定义类类型,名字对应类的属性名parameterType:输入参数类型,如果是简单类型,可以省略,反之不能省略resultType:输出参数类型:把结果集的记录转换为java的哪个类的对象--><!--    sql映射文件:对应一堆sql语句--><select id="selectById" parameterType="int" resultType="com.huse.entity.User">select * from tb_test where id = #{id}</select><delete id="deleteById" parameterType="int">delete from tb_test where id = #{id}</delete><insert id="insertById" parameterType="int">insert into tb_test(id,name) values (2,"测试名") where id = #{id}</insert</mapper>

  1. 加载Sql映射文件

在控制台输出mybatis执行的日志 开发需要

输出日志, 以及把日志保存到文件中, 使用一个日志框架: log4j

只需要简单配置, 就根据配置,把日志输出到指定的地方(控制台,文件)

第一步,导入依赖log4j的依赖

 <!--log4j的依赖-->
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

第二步: 在src/main/resources目录添加log4j配置文件: log4j.properties

#在开发阶段使用debug,在生产环境设置为info或者error
#debug 日志输出级别: debug,info,warn,error  从低到高的级别
#console: 自定义的输出目的地
log4j.rootLogger=debug,console
​
#console目的地配置: 控制台输出
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n

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

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

相关文章

【MongoDB】索引 - 复合索引

一、准备工作 这里准备一些学生数据 db.students.insertMany([{ _id: 1, name: "张三", age: 20, class: { id: 1, name: "1班" }},{ _id: 2, name: "李四", age: 22, class: { id: 2, name: "2班" }},{ _id: 3, name: "王五…

在C#中创建全局热键

在C#中创建全局热键通常涉及使用Windows提供的平台特定功能。在C#中&#xff0c;您可以使用Windows API的RegisterHotKey函数来创建全局热键。以下是如何创建全局热键的详细步骤&#xff1a; using System; using System.Runtime.InteropServices; using System.Windows.Forms;…

2023年最热门的五大编程技术趋势

2023年最热门的五大编程技术趋势 摘要&#xff1a;本文将介绍2023年最热门的五大编程技术趋势&#xff0c;包括人工智能、区块链、WebAssembly、5G和边缘计算以及自动化。我们将详细讨论这些趋势的当前状态、未来展望以及如何利用这些技术来提高您的编程技能。 一、前言 随着…

linux+python3.6.8+uwsgi+postgresql+django部署web服务器

linuxpython3.6.8uwsgipostgresqldjango部署web服务器 1.查看系统信息2.配置postgresql数据库2-1.安装postgresql数据库2-2.设置密码2-3.修改postgresql数据库配置文件 3.Python虚拟环境激活虚拟环境 4.Django4-1.Python 安装Django4-2.创建Django项目4-3.配置Django 5.uwsgi5-…

解决docker tag打标签时报错:Error response from daemon: no such id

现象&#xff1a; 原因&#xff1a; docker tag时不仅仅要Repository仓库名&#xff0c;也需要原有的tag作为版本号 解决办法&#xff1a; docker tag 原有仓库名: 原有tag值 新的打标名称 问题解决&#xff01;

【vue3/高德地图】实现地图打点/自定义点位图标/地理围栏实现

<template><div class"app-container"><div id"container"></div></div> </template><script setup> import AMapLoader from amap/amap-jsapi-loader; /*在Vue3中使用时,需要引入Vue3中的shallowRef方法(使用s…

响应式编程-Project Reactor Mono 介绍

响应式编程-Project Reactor Mono 介绍 本文以Mono的角度来介绍Reactor编程&#xff0c;Flux的使用同理。 初体验 Web应用 controller 方法在Spring webmvc 和 Spring webFlux下Controller方法实现示例如下&#xff1a; Spring webmvc: GetMapping("/test1") …

【bug-maven】(一)java: 错误: 不支持发行版本 5 (二):java: 错误: 无效的源发行版:15

【bug-maven】&#xff08;一&#xff09;java: 错误: 不支持发行版本 5 &#xff08;二&#xff09;&#xff1a;java: 错误: 无效的源发行版&#xff1a;15 &#xff08;一&#xff09;java: 错误: 不支持发行版本 5 报错截图&#xff1a; 出错原因&#xff1a; 打开Projec…

SpringBoot整合EasyExcel

springboot整合easyExcel的全流程&#xff0c;跟着做就能出来。对项目没有侵入要求。0侵入&#xff0c;可插拔 依赖 <!--操作Excel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>…

Vue.js 中的异步组件是什么?

在 Vue.js 中&#xff0c;异步组件是一种延迟加载组件的方式。允许将组件的加载推迟到组件真正需要被渲染时再进行&#xff0c;而不是在初始化时立即加载所有组件。 通过使用异步组件&#xff0c;可以提高应用的初始加载速度&#xff0c;尤其是当应用包含大量组件时。只有当组…

docker存储卷

docker存储卷 COW机制 Docker镜像由多个只读层叠加而成&#xff0c;启动容器时&#xff0c;Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已经存在的 文件&#xff0c;那么该文件将会从读写层下面的只读层复制到读写层&#xff0…

ubuntu 22.04 安装ros2 iron

目录 一、镜像 二、ifconfig 三、ssh连接不上 四、安装iron 一、镜像 123云盘直接下载 二、ifconfig sudo apt install net-tools 三、ssh连接不上 sudo apt install openssh-server 四、安装iron Ubuntu (Debian packages) — ROS 2 Documentation: Iron document…

AI人工智能大模型业务到底有多烧钱?

AI大模型业务确实是一个非常烧钱的行业。首先&#xff0c;大模型的训练需要大量的计算资源。 这些模型通常由数百万个参数组成&#xff0c;训练它们需要大量的计算能力和存储空间。这意味着公司需要购买大量的高性能服务器、图形处理单元和存储设备&#xff0c;这些都是非常昂…

【Navisworks】安装踩坑1625记录

问题 之前安装过Navisworks Manage 2020但卸载了&#xff0c;现在重新安装提示1625错误。 简单记录一下解决过程。 解决 1、AutoRemove 下载链接&#xff1a;https://autodesk8.com/ 使用AutoRemove 检测修复数据之后&#xff0c;重启电脑&#xff0c;重新安装Navisworks 2…

QT学习之QT概述

1.1 什么是QT&#xff1f; Qt是一个跨平台的C图形用户界面应用程序框架。 QT特点&#xff1a; 跨平台&#xff0c;几乎支持所有的平台接口简单&#xff0c;容易上手&#xff0c;学习QT框架对学习其他框架有参考意义。一定程度上简化了内存回收机制开发效率高&#xff0c;能够…

使用lua-resty-request库编写爬虫IP实现数据抓取

目录 一、lua-resty-request库介绍 二、使用lua-resty-request库进行IP数据抓取 1、获取IP地址 2、设置请求 3、处理数据 三、代码实现 四、注意事项 五、总结 本文将深入探讨如何使用lua-resty-request库在爬虫程序中实现IP数据抓取。我们将首先介绍lua-resty-request…

【算法|二分查找No.2】leetcode 69. x 的平方根

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

【Docker】Docker中 的AUFS、BTRFS、ZFS、存储池概念的详细讲解

前言 作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&…

【Python机器学习】零基础掌握StackingRegressor集成学习

如何更准确地预测糖尿病患者的血糖水平? 糖尿病是一种影响全球数百万人的慢性疾病。有效地管理和预测血糖水平是糖尿病患者日常生活的重要一环。单一的预测模型(比如线性回归、支持向量机等)虽然有一定的效果,但在处理复杂的医疗数据时,其准确性可能会受到限制。 为了准…

Apache Doris (五十二): Doris Join类型 - Broadcast Join

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Broadcast Join原理