1 快速构建mybatis项目

1.1 使用Maven的quickstart框架

        注意是不出现w的quickstart:

 

 1.2 加入依赖

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.9</version></dependency></dependencies>

1.3 引入插件

<build><!--资源插件:处理src/main/java目录中的xml--><resources><resource><directory> src/main/java</directory> <!--所在的目录--><includes><!--包括目录下的.properties,.xml文件都会扫描到--><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>

        注意加了插件后dao的xml文件才能加载到target的classes中:

 1.4 在pojo包中创建Student实体类

package jiang.pojo;public class Student {private Integer id;private String name;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}public Student(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age;}public Student() {}
}

1.5 创建对应的Student数据库

1.6 在dao包中创建StudentDao接口

package jiang.dao;import jiang.pojo.Student;public interface StudentDao {Student selectStudentById(Integer id);
}

1.7 在dao包中创建StudentDao.xml文件

        注意:需要修改的有namespace、id、resultType;sql语句后面不写分号;

<?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="jiang.dao.StudentDao"><!--namespace、id、resultType都需要修改--><select id="selectStudentById" resultType="jiang.pojo.Student"> <!--查询一个学生Student<select>:表示查询操作,里面的selectid:要执行的sql语句的唯一表示。是一个自定义的字符串。推荐使用dao接口中的方法名称resultType:告诉mybatis,执行sql语句,把数据赋值给那个类型的java对象。resultType的值现在使用的java对象的全限定名称,从java路径后开始写包路径-->SELECT * FROM student where id = 1</select>
</mapper>

1.8 在main中创建resources资源包

1.9 在resources中创建mybatis.xml主配置文件

        要修改的部分:

        1.<property name="url" value="jdbc:mysql://localhost:3306/study?useUnicode=true&amp;characterEncoding=utf-8"/>     study是数据库的名称!

        2.<mapper resource="jiang/dao/StudentDao.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><environments default="development"><environment id="development"><transactionManager type="JDBC"/><!--配置数据源:创建connection对象。--><dataSource type="POOLED"><!--driver:驱动的内容--><property name="driver" value="com.mysql.jdbc.Driver"/><!--url:连接数据库的url--><property name="url" value="jdbc:mysql://localhost:3306/study?useUnicode=true&amp;characterEncoding=utf-8"/><!--用户名--><property name="username" value="root"/><!--密码--><property name="password" value="root"/></dataSource></environment></environments><!--指定其他mapper文件的位置:找到其他文件的sql语句--><mappers><!--使用mapper的resource属性指定mapper文件路径这个路径是从target/classes路径开启的使用注意:resoruce="mapper文件的路径,使用/分割路径"一个mapper resource指定一个mapper文件--><mapper resource="jiang/dao/StudentDao.xml"/></mappers>
</configuration>

 1.10 创建测试内容

package jiang;import jiang.pojo.Student;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.apache.ibatis.io.Resources;import java.io.IOException;
import java.io.InputStream;public class MyTest {@Testpublic void test1() throws IOException {//调用mybatis某个对象的方法,执行mapper文件中的sql语句// mybatis核心类:sqlsessionFactory//1.定义mybatis主配置文件的位置,从类路径开始的相对路径String config = "mybatis.xml";//2.读取主配置文件。使用mybatis框架中的Resources类InputStream inputStream = Resources.getResourceAsStream(config);//3.创建SqlSessionFactory对象,使用sqlSessionFactoryBuidler类SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);//4.获取SqlSession对象SqlSession sqlSession = factory.openSession();//5.指定要执行的sql语句的id// sql的id = namespace+"."+ selectlupdate|insert |delete标签的id属性值(接口的方法名)String sqlId = "jiang.dao.StudentDao"+"."+"selectStudentById";//6.通过SqlSession方法,执行sql语句Student student = sqlSession.selectOne(sqlId);System.out.print("使用mybatis查询一个学生:"+student);//7.关闭SqlSession对象sqlSession.close();}
}

        运行结果如下:

 

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

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

相关文章

设计模式之策略模式

定义一系列的算法&#xff0c;把他们一个个封装起来&#xff0c;并且使他们可以相互替代。本模式使得算法可独立于使用它的客户而变化! 痛点 策略模式可以很好解决众多if问题 如以下&#xff1a; package com.tao.YanMoDesignPattern.Strategy.notPattern;/*** Author Mi_Ta…

如何让ChatGPT学习私有化知识,并且保留部分对话功能

问题情境 情景&#xff1a;比如我希望用 GPT 做一个产品的客服&#xff0c;现在有一些相关文档&#xff0c;如何让 GPT 学习到产品信息呢&#xff1f; 并且还具备正常对话功能 一个方案是直接把产品信息当做输入喂给GPT&#xff0c;但是ChatGPT/GPT-4/LLMs 一般都有输入长度的…

安装 PyCharm

网址&#xff1a;Download PyCharm: Python IDE for Professional Developers by JetBrains 安装文件&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 正在安装&#xff1a; 安装完成&#xff1a;

pytest钩子函数(三):用例收集钩子

前言 pytest这个框架提供了非常多的钩子。通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预&#xff0c;根据需求去开发对应的插件&#xff0c;以满足自己的使用场景。 01 什么是钩子函数&#xff1f; 钩子函数在pytest称之为Hook函数,它pytes…

Redis缓存击穿

Redis缓存击穿是指在使用Redis作为缓存时&#xff0c;某个热点数据过期或不存在&#xff0c;导致大量请求直接打到后端存储系统&#xff08;例如数据库&#xff09;&#xff0c;使得后端系统压力骤增&#xff0c;性能下降的情况。这种情况通常发生在热点数据失效的瞬间。 缓存…

【高阶数据结构】B树

文章目录 一、B-树1. 常见的搜索结构2. B树概念3. B-树的查找4. B-树的插入分析 二、B树和B*树1. B树2. B*树 三、B-树的应用1. 索引2. MySQL索引简介2.1 MyISAM2.2 InnoDB 一、B-树 1. 常见的搜索结构 种类数据格式时间复杂度顺序查找无要求O(N)二分查找有序O(log2N)二叉搜索…

TCP/IP网络编程 第十九章:Windows平台下线程的使用

内核对象 要想掌握Windows平台下的线程&#xff0c;应首先理解“内核对象”&#xff08;Kernel Objects&#xff09;的概念。如果仅介绍Windows平台下的线程使用技巧&#xff0c;则可以省略相对陌生的内核对象相关内容。但这并不能使各位深入理解Windows平台下的线程。 内核对…

RocksDB架构

1、rocksdb是什么? RocksDB中文网 | 一个持久型的key-value存储 rocksdb是一种KV存储引擎&#xff0c;常用于数据库存储数据&#xff0c;无法直接使用&#xff0c;没有提供sql命令&#xff0c;通过调用rocksdb提供的api进行数据库的读写等操作。 rocksdb是以leveldb为基础开…

Linux一些问题,结合gpt,自己复习用

&#xff08;一&#xff09;请介绍linux以及它和windows的区别 &#x1f427; Linux是一个开源的操作系统&#xff0c;它基于UNIX&#xff0c;并具有强大的自由度和灵活性。它被广泛用于服务器环境和嵌入式系统中。Linux有许多不同的发行版&#xff0c;例如Ubuntu、Debian、Fe…

聊聊spring-cloud的负载均衡

聊聊spring-cloud的负载均衡 1. 选择合适的负载均衡算法2. 合理设置超时时间3. 缓存服务实例列表4. 使用断路器5. 使用缓存Spring Cloud负载均衡组件对比RibbonLoadBalancerWebClient对比 总结 在微服务架构中&#xff0c;负载均衡是非常重要的一个环节&#xff0c;可以有效地提…

S32K144 GPIO外设分析

1. S32K144 GPIO外设特性 下面的内容来自于S32K用户手册的翻译&#xff0c;或者网上关于S32K系列的一些pdf文件介绍。有些内容可能会出现理解不到位或者翻译错误方面&#xff0c;如果大家有疑问最好可以查阅用户手册。 GPIO和PORT的数量 从用户手册&#xff0c;对于PCR&#x…

React Dva项目中路由跳转的方法

接下来 我们来看看路由跳转 先打开 我们Dva项目 然后我们需要在routes 下创建一个自己的路由&#xff0c;如果您尚未掌握在Dva项目中创建路由&#xff0c;可以参考我的文章 React 在Dva项目中修改路由配置&#xff0c;并创建一个自己的路由 然后 我的项目有两个路由 router.js…

ASFF Learning Spatial Fusion for Single-Shot Object Detection 论文学习

1. 解决了什么问题&#xff1f; 目标检测取得了显著成绩&#xff0c;但是检测不同尺度的目标仍然是一个挑战。金字塔或多层级特征是解决目标检测中尺度变化的常用手段。但对于单阶段目标检测器而言&#xff0c;各特征尺度之间不一致性制约了算法的表现。与图像金字塔相比&…

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性 VMware Workstation Tech Preview 2023 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-workstation-18/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xf…

OpenAI的Function calling 和 LangChain的Search Agent

OpenAI的Function calling openai最近发布的gpt-3.5-turbo-0613 和 gpt-4-0613版本模型增加了function calling的功能&#xff0c;该功能通过定义功能函数&#xff0c;gpt通过分析问题和函数功能描述来决定是否调用函数&#xff0c;并且生成函数对应的入参。函数调用的功能可以…

Pytorch个人学习记录总结 07

目录 神经网络-非线性激活 神经网络-线形层及其他层介绍 神经网络-非线性激活 官方文档地址&#xff1a;torch.nn — PyTorch 2.0 documentation 常用的&#xff1a;Sigmoid、ReLU、LeakyReLU等。 作用&#xff1a;为模型引入非线性特征&#xff0c;这样才能在训练过程中…

Java面试题总结记录(3)—— Spring篇

1、什么是Spring&#xff1f; Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对 构建J2EE平台的web应用。 Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过 POJO为基础的编程 模型促进良好的编程习惯 2、你们项…

Socks5代理在爬虫与HTTP应用中的重要性

IP代理的类型及原理常见的IP代理类型有HTTP代理、Socks代理等&#xff0c;本文重点关注Socks5代理。Socks5代理是一种网络协议&#xff0c;可以实现传输层的数据转发&#xff0c;使客户端在不直接连接服务器的情况下与其进行通信。其原理在于接收客户端的请求&#xff0c;然后将…

数组和链表、栈和队列的区别

1.数组和链表的区别 数组和链表是两种不同的数据结构&#xff0c;它们在存储和访问数据上有很大的区别。 1. 存储方式&#xff1a; 数组是一种连续内存空间的数据结构&#xff0c;其元素在内存中是按顺序存储的&#xff0c;通过索引可以直接访问元素。链表是由若干个节点组成…

[k8s] command和args

k8s中的command和args可以覆盖docker镜像中的entrypoint和cmd。其中&#xff0c;k8s-command可以覆盖docker-entrypoint&#xff0c;k8s-args可以覆盖docker-cmd。参考Difference between Docker ENTRYPOINT and Kubernetes container spec COMMAND? 了解一下entrypoint的意义…