MyBatis 快速入门和重点详解(详解)「建议收藏」

MyBatis 快速入门和重点详解(详解)「建议收藏」目录前言:准备工作:开始:1、创建项目(本博主就使用Eclipse,其他编辑器都可以,工具而已)2、创建数据库(mybatisdemo)及表(student)3、创建User对象4、在entity包下创建userMapper,xml文件,如下图5、创建MyBatis的配置文件6、创建MybatisTest.java进行测试前言:Mybatis概念、名词的…

大家好,又见面了,我是你们的朋友全栈君。

目录

1.mybatis简单入门案例。体会到mybatis的乐趣

 

前言:

Mybatis概念、名词的解释这里就不在过多的解释了。这篇博文主要演示,从0开始快速上手Mybatis框架。先学会使用,再去了解为什么这样做,为什么约定大于配置(这里后面会说到)。先把效果做出来,让自己在有一丝的成就感下再去探究Mybatis更深层次的东西。Come on

图解:

MyBatis 快速入门和重点详解(详解)「建议收藏」

1、 mybatis配置

SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。

mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

2、 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

3、 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

4、 mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

5、 Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

6、 Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

7、 Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

准备工作:

既然打算从零开始,这里暂不打算使用Maven构建,就使用普通的java Project即可。后面spring整合时使用maven构建。

工具:Eclispe、IDEA等均可

Jar:mybatis-3.x.x.jar (mybatis类库)、mysql-connector-java(数据库连接)

可以在官网http://blog.mybatis.org/https://github.com/mybatis/mybatis-3/releases中下载MyBatis的资源文件mybatis-3.x.x.zip

开始:

1、创建项目(本博主就使用Eclipse,其他编辑器都可以,工具而已)

创建好普通java project(如下左图) 。因为是普通java项目,因此自己手动创建lib文件夹放jar包(如下右图)。

MyBatis 快速入门和重点详解(详解)「建议收藏」

选中两个jar包,右键Build path,选择Add to build path 会出现如下图,即可。

MyBatis 快速入门和重点详解(详解)「建议收藏」

2、创建数据库(mybatisdemo)及表(student

注:复制此sql语句,如若运行不成功,有可能是网页转换问题,手动建表即可。

INSERT INTO `mybatisdemo`.`student`(`id`, `name`, `age`) VALUES (11, '张三', 20);
INSERT INTO `mybatisdemo`.`student`(`id`, `name`, `age`) VALUES (22, '李四', 21);
INSERT INTO `mybatisdemo`.`student`(`id`, `name`, `age`) VALUES (33, '王五', 22);

3、创建User对象

根据表中的字段来进行创建实体类。这里需要有Get与Set方法

注:此处只是看起来更方便。开发中可以使用lombok中注解@Data即可。

package com.sss.entity;

public class User {

	private int id;
	private String name;
	private int age;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

4、在entity包下创建userMapper,xml文件,如下图

MyBatis 快速入门和重点详解(详解)「建议收藏」

<?xml version="1.0" encoding="UTF-8"?>
<!--mapper:根标签, namespace:命名空间,随便写,一般保证命名空间唯一 -->
<mapper namespace="mybatis.userMapper">
	<!-- 
	     id:唯一标识,随便写, 在同一个命名空间下保持唯一 
	     parameterType: 入参类型
	     resultType:sql语句查询结果集的封装类型,
	 -->
	<select id="selectUser" parameterType="int"  resultType="com.sss.entity.User">
		select * from mybatisdemo where id = #{id}
	</select>
</mapper>

5、创建MyBatis的配置文件

注:因为是java简单项目,因此配置文件就先暂时放置src目录下,spring+mybatis中会按照开发规定放置,这里不过多计较。

自行修改数据库用户名、密码及mapper路径配置

<?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>
	<environments default="development">
		<environment id="development">
			<!-- 事务管理器,JDBC类型的事务管理器 -->
			<transactionManager type="JDBC" />
			<!-- 数据源,池类型的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://127.0.0.1:3306/mybatisdemo?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true" />
		<property name="username" value="root" />
		<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 在配置文件(mybatis-config.xml)中注册SQL映射文件(studentMapper.xml) -->
	<mappers>
		<mapper resource="com/sss/entity/userMapper.xml" />
	</mappers>
</configuration>

6、创建MybatisTest.java进行测试

package com.sss.test;

import java.io.IOException;
import java.io.InputStream;

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 com.sss.entity.User;

public class MybatisTest {

	public static void main(String[] args) throws IOException {
		// 指定全局配置文件
		String resource = "mybatis-config.xml";
		// 读取配置文件
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// 构建sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 还可以传递第二参数,直接指定默认环境是那个
		// 获取sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		try {
			// 操作CRUD,第一个参数:指定statement,规则:命名空间+“.”+statementId
			// 第二个参数:指定传入sql的参数:这里是用户id
			User user = sqlSession.selectOne("mybatis.userMapper.selectUser", 1);
			System.out.println("user: " + user);
		} finally {
			sqlSession.close();
		}
	}
}

图解:

MyBatis 快速入门和重点详解(详解)「建议收藏」

测试结果:只进行查询测试,剩下的增删改都一样。

MyBatis 快速入门和重点详解(详解)「建议收藏」

 2.mybatis一对一和一对多体验

(MyBatis:多对一,多对多的本质就是一对 多的变化)

1、一对一的实现方式

    a.业务扩展类(新建一个扩展类,包含两个类的所有属性) 一般来说继承一个属性多的,重写一个属性少的

    b.resultMap

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147140.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • libxml2编译_etc在哪里安装

    libxml2编译_etc在哪里安装本文着重介绍解析xml的libxml2库的安装及使用,举例说明创建和解析xml的过程。是针对C语言开发人员使用你若想详细学习前端的一套东西,即xmlhtmlcssjavascript(JS)等,可以登录这个网站http://www.runoob.com/一、libxml2的安装  关于libxml2的介绍请参考官方网址http://xmlsoft.org/,下载最……

    2022年10月22日
  • java向上取整小例子

    java向上取整小例子inttimes=(int)Math.ceil((double)1023/(double)100);如果不double强转的话就是int类型计算结果就是直接取整100如果加double强转就是double类型计算对结果向上取整便是101Math.floor向下取整Math.round四舍五入Math.ceil向上取整

  • set集合使用详解

    set集合使用详解set集合使用详解“曾经年少爱追梦,一心只想往前飞。”那会高二,刚刚接触c语言,一发不可收拾,还记得当时为了一个想法和朋友一起想到半夜。现在我还是那个少年,那个又菜又爱玩的少年。咳咳,set集合容器,非常好哈!内部是用二叉搜索树实现的,重点是什么呢,容器内每一个元素呀,它只会出现一次,并且是排好序的,你爱了吗?复杂度更是只有O(log2n),非常高效呢。set算是竞赛里面用的比较多的了,因为,很多题目都爱考一些集合什么的。咳咳,来看看使用方式吧。上表:写法说明set

  • Windows 打开和关闭默认共享方法汇总

    [原文]在使用xcopy上传文件至远程windows服务器时,出现“Invaliddriverspecification”(无效驱动器规格),经过各种排查,最终发现是服务器“关闭默认共享”导致的。Windows启动时都会默认打开admin$ipc$和每个盘符的共享,对于不必要的默认共享,一般都会把它取消掉,可当又需要打开此默认共享时,又该从哪里设置呢。经过自己的验证,汇总出一下方法。一:查看window共享资源运行–>cmd–>输入netshare二:彻底关闭

  • 病毒分析四:steam盗号病毒

    病毒分析四:steam盗号病毒一、样本简介样本是吾爱激活成功教程论坛找到的,原网址:https://www.52pojie.cn/thread-991061-1-1.html,样本链接:https://pan.baidu.com/s/1s6-fa6utvkFJsqQRTCT_fA提取码:tptf此盗号木马伪装成QT语音安装文件,在开黑时,发给受害者,受害者点击后,qq账号和密码,steam账号和密码会被窃取。二、现…

  • android 实现悬架控制

    android 实现悬架控制

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号