2.MyBatis环境搭建

news2024/11/16 2:48:38

数据准备

CREATE TABLE `user` (
	`id` int(11) NOT NULL,
	`username` varchar(30) NOT NULL,
	`sex` varchar(1) NOT NULL,
	`birthday` varchar(10) NOT NULL,
	`address` varchar(100) NOT NULL,
  	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into user values(1,"steven","1","1991-02-11","nanjing");
insert into user values(2,"sherry","0","1995-06-14","taizhou");
insert into user values(3,"steven007","1","1995-01-01","nanjing");
insert into user values(4,"sherry007","0","1995-12-31","taizhou");

搭建MyBatis工程

1.使用IDEA创建工程
在这里插入图片描述
在这里插入图片描述

2.引入项目使用的依赖

<dependencies>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.41</version>
		<scope>runtime</scope>
	</dependency>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.2.2</version>
	</dependency>
</dependencies>

3.Mapper接口开发方式实现原理
Mapper接口开发方式只需要程序员编写Mapper接口即可,由Mybatis框架根据接口定义创建接口的动态代理对象。Mapper接口开发需要遵循以下规范:

  • Mapper.xml文件中的namespace与Mapper接口的类路径相同。
  • Mapper.xml中定义的statement的id与Mapper接口方法名相同 。
  • Mapper.xml中定义的SQL的parameterType与Mapper接口方法的输入参数类型相同。
  • Mapper.xml中定义的SQL的resultType与Mapper接口方法的输出参数类型相同。

4.编写MyBatis框架全局配置文件mybatis.xml
在项目目录“/src/main/resources”下新建config目录,并在config目录下新建mybatis.xml文件,具体代码如下。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 1.环境配置,和spring整合后environments配置将废除 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!-- 配置数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/study?useSSL=false" />
                <property name="username" value="root" />
                <property name="password" value="admin123" />
            </dataSource>
        </environment>
    </environments>

    <!-- 2.在全局配置文件中加载SQL映射文件 -->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

5.编写po类
在项目目录“/src/main/java/com/steven”下新建po(persistent object)目录,并在po目录下新建User类,具体代码如下。

public class User {
    //属性名要和数据库表的字段对应
    private Integer id;
    
    private String username;
    
    private String sex;
    
    private String birthday;
    
    private String address;

	public User() {
    }

	public User(Integer id, String username, String sex, String birthday, String address) {
        this.id = id;
        this.username = username;
        this.sex = sex;
        this.birthday = birthday;
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", sex='" + sex + '\'' +
                ", birthday='" + birthday + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    //get和set方法......
}

6.编写Mapper接口
在项目目录“/src/main/java/com/steven”下新建mapper目录,并在mapper目录下新建UserMapper接口,具体代码如下。

public interface UserMapper {
    User findUserById(Integer id);
}

7.编写SQL映射
在项目目录“/src/main/resources”下新建mapper目录,并在mapper目录下新建UserMapper.xml文件,具体代码如下。

<?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">
<!-- namespace的作用是对SQL进行分类管理,使用mapper代理方式开发,namespace的值是该文件的全限定名 -->
<mapper namespace="com.steven.mapper.UserMapper">
    <!-- 在映射文件中配置多个SQL语句 -->
    <!-- 
     id:标识映射文件中的SQL,对应Mapper接口类的方法名
     parameterType:指定输入参数的类型,对应Mapper接口类的方法入参类型
     resultType:指定SQL输出结果映射的Java对象类型
     #{}表示一个占位符,#{value}其中value表示接收输入参数的名称,如果输入参数是简单类型,那么#{}中的值可以任意。
     -->
    <!-- 根据用户id查找用户 -->
    <select id="findUserById" resultType="com.steven.po.User" parameterType="java.lang.Integer">
        select * from user
        where id=#{id}
    </select>
</mapper>

8.编写测试类
在项目目录“/src/test/java”下新建Test类,具体代码如下。

public class Test {
    public static void main(String[] args) throws Exception {
        //1.获取MyBatis全局配置文件流
        String resource = "config/mybatis.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //2.根据MyBatis配置信息创建会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //3.获取会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //4.获取Mapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //5.业务操作
        User user = userMapper.findUserById(1);
        System.out.println(user);
        sqlSession.close();
    }
}
User{id=1, username='steven', sex='1', birthday='1991-02-11', address='nanjing'}

9.工程目录
在这里插入图片描述

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

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

相关文章

ADI Blackfin DSP处理器-BF533的开发详解2:开发环境的搭建

软硬件开发环境的搭建 纯流程化的东西&#xff0c;没什么技术含量&#xff0c;照着做就行了。 开发板和仿真器进行物理链接&#xff0c;也就是插上JTAG头。 特别特别特别注意&#xff0c;仿真器和开发板均不上电的情况下插JTAG头&#xff0c;不要带电插JTAG头&#xff0c;你…

ORB-SLAM2 ---- Frame::GetFeaturesInArea函数

目录 1.函数用处 2.步骤 3.code 4.函数解释 4.1 函数思想 4.2 代码解释 1.函数用处 找到在 以为中心&#xff0c;半径为的圆形内且金字塔层级在的特征点。 2.步骤 Step 1 计算半径为r圆左右上下边界所在的网格列和行的id Step 2 遍历圆形区域内的所有网格&#xff0c…

代码随想录Day44|完全背包、518.零钱兑换II、377.组合总和IV

文章目录完全背包518.零钱兑换II377.组合总和IV完全背包 文章链接:代码随想录 (programmercarl.com) 背包最大重量为4。 物品为&#xff1a;如果求组合数就是外层for循环遍历物品&#xff0c;内层for遍历背包。 如果求排列数就是外层for遍历背包&#xff0c;内层for循环遍历…

Linux多线程C++版(九) 线程同步和互斥-----线程信号量

目录1.基本概念2.信号量创建和销毁3.信号量加和减操作4.代码理解信号量5.信号量实例银行账户取款----实现互斥6.信号量实例计算和取结果----实现线程同步1.基本概念 信号量从本质上是一个非负整数计数器&#xff0c;是共享资源的的数目&#xff0c;通常被用来控制对共享资源的…

[附源码]JAVA毕业设计同学录网站(系统+LW)

[附源码]JAVA毕业设计同学录网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#…

从源码出发剖解正则表达式

✨✨hello&#xff0c;愿意点进来的小伙伴们&#xff0c;你们好呐&#xff01; &#x1f43b;&#x1f43b;系列专栏&#xff1a;【JavaSE】 &#x1f432;&#x1f432;本篇内容&#xff1a;详解正则表达式 &#x1f42f;&#x1f42f;作者简介:一名现大二的三非编程小白&…

[ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(备份.nb3文件方式)

本文主要讲解如何用Navicat&#xff08;Navicat Premium &#xff0c;或者Navicat for mysql&#xff09;进行MySQL备份和恢复数据库。 本文主要大纲为&#xff1a;使用Navicat备份工具方式进行备份和还原&#xff0c;其中包括还原自身数据库和还原到其他目标库。 文章目录一、…

Jenkins 中 shell 脚本执行失败却不自行退出

Jenkins 中 执行 shell 脚本时&#xff0c;有时候 shell 执行失败了&#xff0c;或者判断结果是错误的&#xff0c;但是 Jenkins 执行完成后确提示成功 success 。 此时&#xff0c;可以通过条件判断来解决这个问题&#xff0c;让 Jenkins 强制退出并提示执行失败 failed 。 …

Tensorflow笔记

Tensorflow笔记基础概念计算图Eager Execution&#xff08;即刻执行&#xff09;eager模式下计算梯度基本使用tf.app加载flag&#xff08;tf.app.flags&#xff09;启动( tf.app.run )基础概念 计算图 Tensor&#xff08;张量&#xff09;&#xff0c;在Tensorflow中可以理解…

畅聊两小时后谈谈chatGPT体验感受

文章目录背景注册聊天实录基于自然语言的SQL翻译shell解析k8s回答其他类型我的问题为何这么接近人类的回答&#xff1f;回答是离线的吗&#xff1f;背景 最近几周不管是T还是微信公众号&#xff0c;大家都在疯玩这个东西。 我姑且将这个应用叫小C吧。我和小C愉快的聊了几个小…

ComponentOne Studio Enterprise 2022

ComponentOne Studio Enterprise 2022 添加了Microsoft.NET 7支持。 FlexGrid for.NET MAUI预览版-您现在可以使用以前使用的相同.NET数据网格&#xff0c;只是它是为MAUI本机开发的&#xff0c;因此您不必学习多种移动开发平台。 WinForms 2022 v3中的新功能 增强的.NET 6控件…

Android系统属性文件浅析

Android的属性文件是Android系统攻防中重要的一环,属性中的一些只读字段(以ro开头)通常会被当作大厂的指纹而加入检测,于是如何mock和检测mock成了安全中举足轻重的知识。属性的检测有几种方案: 通过java标准接口的Build类读取通过shell的getprop [属性key]的方式读取通过sh…

Python作业题:函数和代码复用

本次练习题涉及到的知识点&#xff1a; Python中函数的定义和使用传入函数的参数个数不固定的使用语法lambda函数的使用语法Python异常处理的相关语法 1.关于函数的描述&#xff0c;错误的选项是&#xff08;A&#xff09;。 解析&#xff1a;Python使用保留字def定义一个函…

聚类算法OPTICS的理解及实现

前言 前面给大家介绍到了聚类算法中比较经典的 DBSCAN 算法&#xff0c;对于数据量小而且相对比较密集、密度相似的数据集来说&#xff0c;是比较合适的。那么接下来给大家介绍它的改进版 OPTICS (Ordering points to identify the clustering structure)&#xff0c;针对 DBS…

4年外包终上岸,我只能说这类公司以后能不去就不去

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是4年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&#xff0c;千万…

vue使用axios+element上传文件

引言 springboot后端接口类型&#xff1a;post&#xff0c;其它接口信息如下图 后端接口的实现 代码示例 post 请求头改成’Content-Type’: ‘multipart/form-data’用new FormData() 方式去传对象数据 axios封装请求 import request from /utils/request export function up…

线性表-顺序表

线性表 线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。 前驱元素&#xff1a;若A元素在B元素的前面&#xff0c;则称A为B的前驱元素后继元素&#xff1a;若B元素在A元素的后面&#xff0c;则称B为A的后继元素 线性表…

将gitee上的项目拉取到本地

gitee&#xff1a;中国最大的开源代码共享社区 目录 一、安装git 二、拉取项目 1、首先在gitee上找到自己想要学习的项目 2、在本地新建一个文件夹&#xff08;用来存放你从gitee上拉下来的项目&#xff09; 3、输入命令 4、选择下载的分支代码&#xff08;我这里是mas…

【web课程设计】基于html鲜花商城项目的设计与实现

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

windows下使用免安装(.zip)MariaDB数据库

1. 下载 https://downloads.mariadb.org/ 2. 解压 3. 配置 cmd 进入bin目录 命令行输入&#xff1a;./mysqld.exe --install MariaDB 输出&#xff1a; 至此 安装成功 接下来进行data配置和初始化 4. 初始化 提示&#xff1a;非必要 如果直接执行服务启动命令&#xff1…