mybatis整合(手动添加jar包方式)

操作步骤

创建数据库

建立user表

放入数据

1、创建javaweb工程并添加Jar包

用到的jar包

junit 用于测试

mybatis框架:mybatis-3.5.9.jar

mysql数据库:mysql-connector-java-8.0.28.jar 

2、添加MyBatis核心配置文件

<?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><!-- 配置内容在这里 --></configuration>

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root

 编写”mybatis-config.xml”的配置内容

<?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="database.properties"></properties><typeAliases><package name="entity"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC&amp;useSSL=false"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="mapper/UserMapper.xml"></mapper></mappers>
</configuration>

 ”mybatis-config.xml”的配置节点说明

1、configuration:

        配置文件的根元素节点

2、environments:

        表示配置MyBaits的多套运行环境,该元素节点下可以配置多个environment子元素节点

3、environment:

        配置Mybaits的一套运行环境,需指定运行环境ID、事务管理(transactionManager)和数据源(dataSource)配置等相关信息

4、mappers:

        其下可以配置多个mapper节点来具体指定SQL映射文件的路径,resource属性的值表述了类资源路径下的SQL映射文件的路径

3、创建实体类

package entity;public class User {private String username;private String password;private Integer age;private String sex;private String birthDate;public User() {}public User(String username, String password, Integer age, String sex, String birthDate) {this.username = username;this.password = password;this.age = age;this.sex = sex;this.birthDate = birthDate;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getBirthDate() {return birthDate;}public void setBirthDate(String birthDate) {this.birthDate = birthDate;}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +", sex='" + sex + '\'' +", birthDate=" + birthDate +'}';}
}

注: 1、类的名称不一定和表名相同

2、属性名称和数据库字段名称相同,才能自动映射

3、属性类型需要和数据库字段类型对应

4、每一个属性都要生成get/set方法 

4、创建SQL映射文件

<?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="/"><!-- SQL映射写在这里 -->
</mapper>

 编辑”UserMapper.xml”SQL映射内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="/"><select id="findAll" resultType="user">
select * from user</select><select id="findAll2" resultType="map">
select * from user</select><select id="myCount" resultType="int" parameterType="map">select count(*) from smbms_bill join smbms_provider on smbms_bill.providerId=smbms_provider.id where smbms_provider.proName like concat('%',#{proName},'%') and isPayment=#{isPayment}</select>
</mapper><!--建立映射关系-->

配置节点说明 

select:表示查询语句

id属性:表示该SQL语句的唯一标识符

resultType属性:表示SQL语句返回值类型,此处通过SQL语句查询数据,将数据直接映射到User实体类上 

5、代码测试,输出结果

import entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class UserMapperTest {@Testpublic void Test01() throws IOException {System.out.println(" = ");InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory build = sqlSessionFactoryBuilder.build(inputStream);SqlSession sqlSession = build.openSession();List<User> findAll = sqlSession.selectList("findAll");for (User user: findAll) {System.out.println("user = " + user);}sqlSession.close();}@Testpublic void Test02() throws IOException {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory build = sqlSessionFactoryBuilder.build(inputStream);SqlSession sqlSession = build.openSession();List<Map<String,Object>> findAll = sqlSession.selectList("findAll2");for (Map<String, Object> stringObjectMap : findAll) {System.out.println("stringObjectMap = " + stringObjectMap);}sqlSession.close();}}

 结果为list集合对象

结果为map集合对象 

6、扩展 

configuration 根节点

        properties    可以配置在Java 属性配置文件中

        settings    修改 MyBatis 在运行时的行为方式

        typeAliases   为 Java 类型命名一个别名(简称)

        typeHandlers   类型处理器

        objectFactory   对象工厂

        plugins   插件

        environments   环境

                environment   环境变量

                        transactionManager  事务管理器

                        dataSource   数据源

        mappers    映射器

注意顺序不然会爆红

typeAliases元素的作用是配置类型别名

二选一推荐第二个

这个可以指定名称

作用是简化代码

默认是类首字母小写的名称

通过package的name属性直接指定包名,Mybatis会自动扫描指定包下的JavaBean,并设置一个别名,默认名称为非限定类名

原本要这样写

 现在

属性文件: 文件后缀为.properties 这种文件以key=value格式存储内容 

指定类资源路径下的属性文件 

使用${}占位符和属性文件中的键名来实现动态配置

 mapper

namespace属性的作用: namespace和子元素的id联合保证全局唯一,区别不同的映射文件 绑定DAO接口,即面向接口编程

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

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

相关文章

Leetcode刷题详解——乘积为正数的最长子数组长度

1. 题目链接&#xff1a;1567. 乘积为正数的最长子数组长度 2. 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度。 示…

什么是结构化数据?哪些OCR软件可将图片文字转为结构化数据?

结构化数据是指按照一定的数据模型组织和存储的数据&#xff0c;具有明确的数据类型和数据关系&#xff0c;并且可通过计算机程序进行处理和分析。这种数据通常存储在定义明确的模式中&#xff0c;例如数据库&#xff0c;采用表格的形式存储&#xff0c;每个数据项都有特定的字…

Mover Creator 用户界面

1 “开始”对话框 首次打开 Mover Creator 时&#xff0c;出现的第一个页面是“开始”对话框&#xff0c;如下所示。从这里开始&#xff0c;用户可以选择开始设计飞机、武器或发动机。在上述每种情况下&#xff0c;用户都可以创建新模型或编辑现有模型。 1.1 新建模型 如果用…

Apache Doris 详细教程(二)

5、doris的查询语法 5.1、doris查询语法整体结构 SELECT [ALL | DISTINCT | DISTINCTROW ] -- 对查询字段的结果是否需要去重&#xff0c;还是全部保留等参数 select_expr [, select_expr ...] -- select的查询字段 [FROM table_references [PARTITION…

94基于matlab的蚁群算法 (ACO) 对付的图像边缘检测问题

基于matlab的蚁群算法 (ACO) 对付的图像边缘检测问题。提出基于蚁群算法的边缘检测方法是能够建立一个信息素矩阵表示提出了一种在图像每个像素位置的边缘信息根据大量的蚂蚁的运动有哪些派去在图像上移动。此外&#xff0c;运动这些蚂蚁是由图像的局部变化驱动强度值。数据可更…

U1编译概述

文章目录 基本概念定义一些概念 编译流程词法分析语法分析语义分析、生成中间代码中间代码 代码优化生成目标程序五个阶段中都需要做的两件事符号表管理出错处理 总结 其他概念多层中间表示和遍&#xff08;PASS&#xff09;三端模式课程概述 基本概念 定义 用高级语言编制的…

【Java 基础】18 I/O流

文章目录 1.基本概念2.字节流3.字符流4.标准输入输出5.最佳实践 I/O流&#xff08;Input/Output 流&#xff09;是计算机程序中不可或缺的一部分&#xff0c; 往大了说所有的操作都是IO。Java 提供了强大而灵活的 I/O 框架&#xff0c;支持各种数据的 读取和 写入操作。 1.基…

45 - 多线程性能优化常见问题

1、使用系统命令查看上下文切换 上下文切换常见的监测工具 1.1、Linux 命令行工具之 vmstat 命令 vmstat 是一款指定采样周期和次数的功能性监测工具&#xff0c;我们可以使用它监控进程上下文切换的情况。 vmstat 1 3 命令行代表每秒收集一次性能指标&#xff0c;总共获取 …

【JavaSE】:String(二):深入String

深入String 一.字符串的存储二.字符串的不可变性三.字符串修改四.StringBuilder和StringBuffer 一.字符串的存储 我们知道双引号里的数据都是字符串常量&#xff0c;储存在字符串常量池当中。 例子 直接使用是比较地址。字符串常量池有一个特点&#xff1b;它会先检查该常量是否…

LLM-Intro to Large Language Models

LLM some LLM’s model and weight are not opened to user what is? Llama 270b model 2 files parameters file parameter or weight of neural networkparameter – 2bytes, float number code run parameters(inference) c or python, etcfor c, 500 lines code withou…

中介者模式 rust和java的实现

文章目录 中介者模式介绍实现javarustrust仓库 中介者模式 中介者模式&#xff08;Mediator Pattern&#xff09;又被称为 调停者模式 。 它定义了一个中介对象来封装一系列对象之间的交互关系。 中介者使各个对象之间不需要显式地相互引用&#xff0c;从而使耦合性降低&#…

计算机网络扫盲(4)——时延

一、概述 在这里&#xff0c;我们考虑分组交换网的情况&#xff0c;因特网可以被看成是一种基础设施&#xff0c;该基础设施为运行在端系统上的分布式应用提供服务。在理想情况下&#xff0c;我们希望因特网服务能够在任意两个端系统之间随心所欲地移动数据而没有任何数据地丢失…

韩语图片文字如何转为纯文本?

如何将上图为韩语的图片转为文本文件&#xff1f;这个需要用到OCR程序&#xff0c;操作方法如下&#xff1a; 一、打开金鸣识别网站。 二、点击“点击添加图片/PDF”&#xff0c;将待识别的图片添加到列表。 三、识别模块点选“通用文字”&#xff0c;输出格式选择“纯文本输出…

陀螺仪LSM6DSV16X与AI集成(1)----轮询获取陀螺仪数据

陀螺仪LSM6DSV16X与AI集成.1--轮询获取陀螺仪数据 概述视频教学样品申请通信模式管脚定义IIC通信模式速率生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置量程和速率配置过滤链轮询读取数据主程序演示 概述 本文将介绍如何使…

PPT设置背景颜色

问题描述&#xff1a;PPT如何设置背景颜色&#xff1f; 问题解决&#xff1a;设计→设置背景格式→颜色→蓝色&#xff08;最好选择看着比较舒服的颜色&#xff09;

如何通过缺口发现短线机会?

一、认识缺口形态 新手一开始接触技术分析&#xff0c;可能都以为“缺口”是一个很高深的技术形态。其实缺口很简单&#xff0c;就是K线图中的价格空白区域&#xff0c;也就是股价上涨或下跌的过程中&#xff0c;跳过了这个价格。根据跳空的方向不同&#xff0c;缺口可以分为向…

AArch64中的虚拟化

运行在EL2或更高级别的软件具有对虚拟化的几个控制权限&#xff1a; • 第二阶段翻译&#xff08;Stage 2 translation&#xff09; • EL1/0指令和寄存器访问trapping • 虚拟异常生成 非安全状态和安全状态下的异常级别&#xff08;ELs&#xff09;如下图所示&#xff1a; 在…

SAP_ABAP_RZ11解决SAP运行超时问题 TIME_OUT / rdisp/scheduler/prio_high/max_runtime

SAP ABAP 顾问&#xff08;开发工程师&#xff09;能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读510次。目标&#xff1a;基于对SAP abap 顾问能力模型的梳理&#xff0c;给一年左右经验的abaper 快速成长为三年经验提供超级燃料&#xff01;https://blog.csdn.net/j…

音频处理关键知识点

1 引言 现实生活中&#xff0c;我们听到的声音都是时间连续的&#xff0c;我们称为这种信号叫模拟信号。模拟信号需要进行数字化以后才能在计算机中使用。 目前我们在计算机上进行音频播放都需要依赖于音频文件。音频文件的生成过程是将声音信息采样、量化和编码产生的数字信号…

linux无网络 无ip,显示网络未连接

标题:linux无网络 无ip&#xff0c;显示网络未连接 参考blog&#xff1a;Linux无网络连接问题排查 首先我们发现ens33没有ip地址&#xff0c;说明这个接口并没有被分到ip&#xff1b; 我们可以通过手动方式来给ens33获得网络ip sudo dhclient ens33&#xff0c;之后再输入ifc…