mybatis入门(开发环境+入门案例)(代码片段)

一只楠喃 一只楠喃     2023-01-08     533

关键词:


1. MyBatis入门

1.1 概述

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

历史进程

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对iBatis进行一些改进。

多学一招

同层产品:commons-dbutils、spring-jdbc、Hibernate

2 下载

MyBaits的代码由github.com管理,地址:https://github.com/mybatis/mybatis-3/releases

3 与JDBC对比

JDBC编写DAO的步骤

MyBatis编写DAO的步骤

4 入门:搭建环境

4.1 构建项目

1)创建新项目:Java --> Java EE --> Web Application

2)创建项目名:mybatis-demo01

3)添加jar包WEB-INF/lib目录下(目录不存在,需手动创建)

4)添加jar

4.2 数据库和表:User

# 创建数据库
CREATE DATABASE ssm_db1;
# 使用数据库
USE ssm_db1;
# 1.1 创建用户表
CREATE TABLE `user` (
  `uid` VARCHAR(32) NOT NULL,
  `username` VARCHAR(20) DEFAULT NULL,	#用户名
  `password` VARCHAR(32) DEFAULT NULL,	#密码
  `name` VARCHAR(20) DEFAULT NULL,		#昵称
  `email` VARCHAR(30) DEFAULT NULL,		#电子邮箱
  `telephone` VARCHAR(20) DEFAULT NULL,	#电话
  `birthday` DATE DEFAULT NULL,			#生日
  `sex` VARCHAR(10) DEFAULT NULL,		#性别
  `state` INT(11) DEFAULT 0,			#状态:0=未激活,1=已激活
  `code` VARCHAR(64) DEFAULT NULL,		#激活码
  PRIMARY KEY (`uid`)
) ;
# 1.2 初始化用户默认数据
INSERT INTO `user` VALUES ('u001','jack','1234','杰克','jack@czxy.com','13612345678','2015-11-04','男',0,NULL);
INSERT INTO `user` VALUES ('u002','rose','1234','肉丝','rose@czxy.com','13612345679','2015-11-05','女',0,NULL);
INSERT INTO `user` VALUES ('373eb242933b4f5ca3bd43503c34668b','ccc','ccc','aaa','bbb@store.com','15723689921','2015-11-04','男',0,'9782f3e837ff422b9aee8b6381ccf927bdd9d2ced10d48f4ba4b9f187edf7738'),('3ca76a75e4f64db2bacd0974acc7c897','bb','bb','张三','bbb@store.com','15723689921','1990-02-01','男',0,'1258e96181a9457987928954825189000bae305094a042d6bd9d2d35674684e6'),('62145f6e66ea4f5cbe7b6f6b954917d3','cc','cc','张三','bbb@store.com','15723689921','2015-11-03','男',0,'19f100aa81184c03951c4b840a725b6a98097aa1106a4a38ba1c29f1a496c231'),('c95b15a864334adab3d5bb6604c6e1fc','bbb','bbb','老王','bbb@store.com','15712344823','2000-02-01','男',0,'71a3a933353347a4bcacff699e6baa9c950a02f6b84e4f6fb8404ca06febfd6f'),('f55b7d3a352a4f0782c910b2c70f1ea4','aaa','aaa','小王','aaa@store.com','15712344823','2000-02-01','男',1,NULL);

5 入门案例:查询所有

5.1 JavaBean:User

package com.czxy.ssm.domain;

import java.util.Date;

/**
 *
 Create Table

 CREATE TABLE `user` (
 `uid` varchar(32) NOT NULL,
 `username` varchar(20) DEFAULT NULL,
 `password` varchar(20) DEFAULT NULL,
 `name` varchar(20) DEFAULT NULL,
 `email` varchar(30) DEFAULT NULL,
 `birthday` date DEFAULT NULL,
 `sex` varchar(10) DEFAULT NULL,
 `state` int(11) DEFAULT NULL,
 `code` varchar(64) DEFAULT NULL,
 PRIMARY KEY (`uid`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

 */

public class User 

	private String uid;
	private String username;
	private String password;
	private String name;
	private String email;
	private Date birthday;
	private String sex;
	private Integer state;
	private String code;


	@Override
	public String toString() 
		return "User" +
				"uid='" + uid + '\\'' +
				", username='" + username + '\\'' +
				", password='" + password + '\\'' +
				", name='" + name + '\\'' +
				", email='" + email + '\\'' +
				", birthday=" + birthday +
				", sex='" + sex + '\\'' +
				", state=" + state +
				", code='" + code + '\\'' +
				'';
	

	public String getUid() 
		return uid;
	

	public void setUid(String uid) 
		this.uid = uid;
	

	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 String getName() 
		return name;
	

	public void setName(String name) 
		this.name = name;
	

	public String getEmail() 
		return email;
	

	public void setEmail(String email) 
		this.email = email;
	

	public Date getBirthday() 
		return birthday;
	

	public void setBirthday(Date birthday) 
		this.birthday = birthday;
	

	public String getSex() 
		return sex;
	

	public void setSex(String sex) 
		this.sex = sex;
	

	public Integer getState() 
		return state;
	

	public void setState(Integer state) 
		this.state = state;
	

	public String getCode() 
		return code;
	

	public void setCode(String code) 
		this.code = code;
	

	public User(String uid, String username, String password, String name, String email, Date birthday, String sex, Integer state, String code) 

		this.uid = uid;
		this.username = username;
		this.password = password;
		this.name = name;
		this.email = email;
		this.birthday = birthday;
		this.sex = sex;
		this.state = state;
		this.code = code;
	

	public User() 

	


5.2 编写Dao:UserMapper

之前的开发中我们编写的都是UserDao,在MyBatis将dao称为Mapper。
所以此后所有dao接口统一命名成Mapper。

在MyBatis只需要编写接口即可,实现类由MyBatis自动生成,并在测试程序时自动执行。

package com.czxy.ssm.mapper;

import com.czxy.ssm.domain.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author sky
 */
public interface UserMapper 
    /**
     * 查询所有
     * @return
     */
    @Select("select * from user")
    public List<User> selectAll();


5.3 编写核心配置文件:SqlMapConfig.xml

  • 配置文件名称:SqlMapConfig.xml

  • 配置文件位置:src


  • 配置文件内容:

<?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>

	<!-- 环境: default的值引用什么id,就表示使用什么数据库了-->
	<environments default="db1">
		<!-- 配置数据库连接信息及事务 -->
		<environment id="db1">
			<!-- 表示使用事务:默认是自动开启事务 -->
			<transactionManager type="JDBC" />
			<!-- 使用连接池 -->
			<dataSource type="POOLED">
				<!-- 数据库连接基本信息 -->
				<property name="driver" value="com.mysql.cj.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/ssm_db1" />
				<property name="username" value="root" />
				<property name="password" value="1234" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<!-- 表示加载此包下的所有dao接口-->
		<package name="com.czxy.ssm.mapper"/>
	</mappers>
</configuration>

5.4 测试类

package com.czxy.ssm.test;

import com.czxy.ssm.domain.User;
import com.czxy.ssm.mapper.UserMapper;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author sky
 */
public class Test01_SelectAll 
    public static void main(String[] args) throws IOException 

        //1 加载配置文件
        // 1.1 获得资源流
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 1.2 获得工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

        //2 获得会话(连接)
        SqlSession session = factory.openSession();

        //3获得功能接口
        UserMapper userMapper = session.getMapper(UserMapper.class);

        //4 调用功能
        List<User> userList = userMapper.selectAll();

        //5 打印查询结果
        for (User user : userList) 
            System.out.println(user);
        
    


6 总结

到这里MyBatis的入门案例已经完成。我们总结一下:

  • 编写SqlMapConfig.xml,用于配置数据源和需要加载的Mapper
  • 编写UserMapper.java接口,用于执行方法与SQL语句的绑定
  • 基本API使用,流程是:加载资源、获得工厂、获得会话、获得Mapper。

mybatis程序入门案例

思路:搭建环境--->导入Mybatis--->编写代码--->测试1.1、搭建环境搭建数据库createdatabasesifnotexists`mybatis`;use`mybatis`;createtableifnotexists`user`(`id`int(20)notnull,`name`varchar(30)defaultnull,`pwd`varchar(30)de 查看详情

mybatis(代码片段)

...述 1.什么是框架 2.三层架构 3.持久层技术解决方案 4.mybatis概述 5.mybatis的环境搭建 6.mybatis入门案例自定义Mybatis框架Mybatis框架快速入门框架概述 1.什么是框架    它是我们软件开发中的一套解决方案,不同的框架解决... 查看详情

springboot(代码片段)

...Boot整合JUnit2.基于SpringBoot实现SSM整合问题导入2.1Spring整合MyBatis(复习)2.2SpringBoot整合MyBatis2.3案例-SpringBoot实现ssm整合学习目标基于SpringBoot框架的程序开发步骤熟练使用SpringBoot配置信息修改服务器配置基于SpringBoot的完成... 查看详情

mybatisplus——入门案例(代码片段)

MyBatisPlusMyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率开发方式基于MyBatis使用MyBatisPlus基于Spring使用MyBatisPlus基于SpringBoot使用MyBatisPlus SpringBoot整合MyBatis开发过程(复习)创建SpringBoot... 查看详情

[mybatisplus]入门案例(代码片段)

入门案例创建测试数据库和表CREATEDATABASE`mybatis_plus`/*!40100DEFAULTCHARACTERSETutf8mb4*/;use`mybatis_plus`;CREATETABLE`user`(`id`bigint(20)NOTNULLCOMMENT'主键ID',`name&# 查看详情

intellijideamybatis入门案例(代码片段)

最近打算学习ssm框架 Mybatis作为入门的第一个持久层框架,学习起来实在费劲。故写此文章作为入门案例。先打开IDEA建立一个Maven项目,目录结构如下:源代码已经上传至GitHub https://github.com/Wo-com/mybatis_demo,需要的点击下... 查看详情

mybatis入门(代码片段)

文章目录1.简介1-1什么是mybatis1-2.持久层简介1-3.为什么需要mybatis2.第一个mybatis程序2-1.搭建环境2-2.创建一个模块2-3.编写代码2-4.测试3.CRUD(增删改查)4.使用注解开发4-1.mybatis的常用注解说明5.log4j1.简介1-1什么是mybatisMyBatis... 查看详情

mybatis入门(代码片段)

文章目录1.简介1-1什么是mybatis1-2.持久层简介1-3.为什么需要mybatis2.第一个mybatis程序2-1.搭建环境2-2.创建一个模块2-3.编写代码2-4.测试3.CRUD(增删改查)4.使用注解开发4-1.mybatis的常用注解说明5.log4j1.简介1-1什么是mybatisMyBatis... 查看详情

mybatis框架之入门(代码片段)

什么是框架  框架就是一个架子,表演节目,舞台已经搭建好,表演什么节目,看自己的需求了。  框架是一个半成品,对于Java语言来说,框架就是封装了别人的代码。在框架的基础上我们在进一步开发,拿来主义。框架... 查看详情

⭐️实用mybatis入门&使用(代码片段)

文章目录一、Mybatis简介1.1MyBatis历史1.2MyBatis特性1.3MyBatis下载1.4和其它持久化层技术对比二、搭建MyBatis2.1开发环境2.2创建maven工程2.3创建MyBatis的核心配置文件2.4创建mapper接口2.5创建MyBatis的映射文件2.6通过junit测试功能2.7加入log4j... 查看详情

mybatis入门案例超详细(代码片段)

...rMapper.xml映射文件添加查询语句3.测试方法4.运行结果二、MyBatis核心对象及工作流程1.MyBatis核心对象2.MyBatis工作流程3.使用SqlSession操作数据库三、添加其他常见方法1.Mybatis新增用户2.Mybatis用户更改3.Mybatis删除用户4.Mybatis根据用户id... 查看详情

mybatis-plus简介及入门案例(代码片段)

Mybatis简介MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址:https://www.baomidou.com/特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般... 查看详情

mybatis入门案例

...ResultSet  Spring的JdbcTemplate:Spring中对JDBC的简单封装4、mybatis的环境搭建  第一步:创建maven工程并导入坐标(即在pom.xml文件中 查看详情

mybatis-plus工具学习笔记---[基本概述,入门案例搭建,通用service接口使用](代码片段)

...查询总记录数4.2测试批量存储数据功能近期也是计划学习mybatis-plus,扩展知识;推荐官方文档食用学习–>https://baomidou.com/Mybatis-plus官方文档本次学习根据B站尚 查看详情

mybatis-plus工具学习笔记---[基本概述,入门案例搭建,通用service接口使用](代码片段)

...查询总记录数4.2测试批量存储数据功能近期也是计划学习mybatis-plus,扩展知识;推荐官方文档食用学习–>https://baomidou.com/Mybatis-plus官方文档本次学习根据B站尚 查看详情

mybatis入门(代码片段)

文章目录Mybatis入门创建一个Mybatis程序的步骤增删改查1.namespace的绑定的包名,要和接口的包名一致2.select选择查询3.insert插入操作4.update更新操作5.deleteMap映射查询模糊查询配置解析1.需要掌握2.配置环境(environments)3.属性(propert... 查看详情

mybatis开发入门(代码片段)

...能通过再系统化的学习一遍,将知识组织起来。一、MyBatis的特点       1、从原生JDBC编程到借助MyBatis              之前JDBC的编程方式存在的问题为存在较多的硬编码,不利于系统的维护,同时,对于... 查看详情

mybatis快速入门

一、MyBatis背景介绍  MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(... 查看详情