0

0

MyBatis入门(一)---基本使用

黄舟

黄舟

发布时间:2016-12-21 14:21:13

|

1693人浏览过

|

来源于php中文网

原创

一、MyBatis简介

1.1、概述

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以对配置和原生Map使用简单的 xml 或注解,将接口和 java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

1.2、ORM

orm工具的基本思想
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
2. 由sessionfactory  产生 session
3. 在session 中完成对数据的增删改查和事务提交等.
4. 在用完之后关闭session 。

5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。

 

二、环境搭建

2.1、所需要Jar包

 要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。

34.png

2.2、建立数据库与插入数据

这里使用MySQL数据库:

CREATE TABLE `mybatis`.`user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `name` VARCHAR(45) NOT NULL DEFAULT '无名氏' COMMENT '用户名',
  `age` TINYINT(3) NOT NULL DEFAULT 21 COMMENT '用户年龄',
  `birthday` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT '用户生日',
  `address` VARCHAR(256) NOT NULL DEFAULT '北京' COMMENT '用户地址',  PRIMARY KEY (`id`)  COMMENT '')
COMMENT = '用户表';

insert into user(id,name,age,birthday,address)values(1,'张三',23,'1990-01-23 20:24:21','上海'),(2,'李四',18,'1986-12-23 12:13:11','广州'),(3,'

2.3、建立Web项目把Jar包引入项目

35.png

三、建立配置文件,实体类,与接口

3.1、建立实体类

 

/**  * @Title: User.java

* @Package com.pb.mybatis.po

* @Description: TODO(用户类)

* @author 刘楠

* @date 2015-10-26 下午5:42:13

* @version V1.0  

*/package com.pb.mybatis.po;import java.util.Date;/**
* @ClassName: User

* @Description: TODO(用户类)

* @author  刘楠

* @date 2015-10-26 下午5:42:13

* */public class User {    
   /**
    * id(用户ID)     */
   private int id;    /**
    * name(用户名)     */
   private String name;    /**
    *age (用户年龄)     */
   private int age;    /**
    * birthday(用户生日)     */
   private Date birthday;    /**
    * address (用户地址)     */
   private String address;    /**
    * @return the id     */
   public int getId() {        return id;
   }    /**
    * @param id the id to set     */
   public void setId(int id) {        this.id = id;
   }    /**
    * @return the name     */
   public String getName() {        return name;
   }    /**
    * @param name the name to set     */
   public void setName(String name) {        this.name = name;
   }    /**
    * @return the age     */
   public int getAge() {        return age;
   }    /**
    * @param age the age to set     */
   public void setAge(int age) {        this.age = age;
   }    /**
    * @return the brithday     */
   public Date getBirthday() {        return brithday;
   }    /**
    * @param brithday the brithday to set     */
   public void setBirthday(Date birthday) {        this.birthday = birthday;
   }    /**
    * @return the address     */
   public String getAddress() {        return address;
   }    /**
    * @param address the address to set     */
   public void setAddress(String address) {        this.address = address;
   }
   

}

 

3.2、写实体类接口

 

/**  * @Title: UserMapper.java

* @Package com.pb.mybatis.dao

* @Description: TODO(用一句话描述该文件做什么)

* @author 刘楠

* @date 2015-10-26 下午5:45:13

* @version V1.0  

*/package com.pb.mybatis.dao;import com.pb.mybatis.po.User;/**
* @ClassName: UserMapper

* @Description: TODO(用户类数据访问接口)

* @author  刘楠

* @date 2015-10-26 下午5:45:13

* */public interface UserMapper {    /**
    *
    * @Title: selectUserById
   
    * @Description: TODO(根据用户ID查询)
   
    * @param id
    * @return User     */
   public User selectUserById(int id);

}

 

3.3、与db.properties

 db.properties

#数据库基本配置
#驱动
driver=com.mysql.jdbc.Driver
#连接url
url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8#用户名
username=root
#密码
passWord=root

3.4、建立映射文件与configuration.xml配置

 

 UserMapper.xml

br/>  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 

 

configuration.xml

br/>  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">

 

3.5、简单根据ID查询

SmartB2B行业电子商务
SmartB2B行业电子商务

SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板

下载

 

/**  * @Title: Test1.java

* @Package com.pb.mybatis.test

* @Description: TODO(用一句话描述该文件做什么)

* @author 刘楠

* @date 2015-10-26 下午5:55:54

* @version V1.0  

*/package com.pb.mybatis.test;import java.io.IOException;import java.io.Reader;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.pb.mybatis.dao.UserMapper;import com.pb.mybatis.po.User;/**
* @ClassName: Test1

* @Description: TODO(测试类)

* @author  刘楠

* @date 2015-10-26 下午5:55:54

* */public class Test1 {    //Session工厂
   static SqlSessionFactory sqlSessionFactory=null;    //Session
   static SqlSession session=null;    //字符流
   static Reader reader=null;    
   public static void main(String[] args) {
       
       selectById();
   }    /**
    *
    * @Title: selectById
   
    * @Description: TODO(根据ID查找用户)
    void     */
   public static void selectById(){        //加载配置文件
       try {
           reader=Resources.getResourceAsReader("configuration.xml");            //建立SqlSessionFactory
           sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);            //打开Session
           session=sqlSessionFactory.openSession();            //获取用户接口对象
           UserMapper userMapper=session.getMapper(UserMapper.class);            //调用查询方法
           User user=userMapper.selectUserById(1);
           System.out.println(user.getName()+"..."+user.getAge()+"..."+user.getBirthday().toLocaleString()+"..."+user.getAddress());
       } catch (IOException e) {
           e.printStackTrace();
       }
       
   }

}

 

3.6、使用别名

36.png

更改mapper.xml中的User类的路径 为别名

37.png

br/>  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 

测试类不变

3.7、使用resultMap

在mapper.xml中使用resultMap

 

br/>  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 

 

测试类不变

 

 

 

四、实现基本的增、删、改、查

4.1、在接口中增加,模糊查询,添加,修改,删除的方法,

 

/**  * @Title: UserMapper.java

* @Package com.pb.mybatis.dao

* @Description: TODO(用一句话描述该文件做什么)

* @author 刘楠

* @date 2015-10-26 下午5:45:13

* @version V1.0  

*/package com.pb.mybatis.dao;import java.util.Date;import java.util.List;import com.pb.mybatis.po.User;/**
* @ClassName: UserMapper

* @Description: TODO(用户类数据访问接口)

* @author  刘楠

* @date 2015-10-26 下午5:45:13

* */public interface UserMapper {    /**
    *
    * @Title: selectUserById
   
    * @Description: TODO(根据用户ID查询)
   
    * @param id
    * @return User     */
   public User selectUserById(int id);    /**
    *
    * @Title: selectUserLikeName
   
    * @Description: TODO(根据姓名模糊查询)
   
    * @param name
    * @return List     */
   public List selectUserLikeName(String name);    
   /**
    *
    * @Title: addUser
   
    * @Description: TODO(添加用户)
   
    * @param user void     */
   public void addUser(User user);    /**
    *
    * @Title: updateUser
   
    * @Description: TODO(修改用户)
   
    * @param user void     */
   public void updateUser(User user);    /**
    *
    * @Title: deleteUser
   
    * @Description: TODO(删除用户)
   
    * @param id void     */
   public void deleteUser(int id);
}

 

4.2、在mapper.xml中增加相应的映射

 

br/>  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 insert into user(name,age,birthday,address)
values(#{name},#{age},#{birthday},#{address})
update user set name=#{name},age=#{age},birthday=#{birthday},address=#{address}
where id=#{id}
delete from user
where id=#{id}

 

4.3、测试类

 

/**  

* @Title: Test1.java

* @Package com.pb.mybatis.test

* @Description: TODO(用一句话描述该文件做什么)

* @author 刘楠

* @date 2015-10-26 下午5:55:54

* @version V1.0  

*/package com.pb.mybatis.test;import java.io.IOException;import java.io.Reader;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;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.pb.mybatis.dao.UserMapper;import com.pb.mybatis.po.User;/**
* @ClassName: Test1
*
* @Description: TODO(测试类)
*
* @author 刘楠
*
* @date 2015-10-26 下午5:55:54
*
*
*/public class Test1 {    // Session工厂
   static SqlSessionFactory sqlSessionFactory = null;    // Session
   static SqlSession session = null;    // 字符流
   static Reader reader = null;    public static void main(String[] args) {

       
   }    /**
    *
    * @Title: selectById
    *
    * @Description: TODO(根据ID查找用户) void     */
   public static void selectById() {        // 加载配置文件
       try {
           reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session
           session = sqlSessionFactory.openSession();            // 获取用户接口对象
           UserMapper userMapper = session.getMapper(UserMapper.class);            // 调用查询方法
           User user = userMapper.selectUserById(1);
           System.out.println(user.getName() + "..." + user.getAge() + "..."
                   + user.getBirthday().toLocaleString() + "..."
                   + user.getAddress());
       } catch (IOException e) {
           e.printStackTrace();
       }

   }    /**
    *
    * @Title: selectLikeName
    *
    * @Description: TODO(根据用户名模糊查询) void     */
   public static void selectLikeName() {        // 加载配置文件
       try {
           reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session
           session = sqlSessionFactory.openSession();            // 获取用户接口对象
           UserMapper userMapper = session.getMapper(UserMapper.class);            // 调用查询方法
           List users = userMapper.selectUserLikeName("张");            for (User user : users) {
               System.out.println(user.getName() + "..." + user.getAge()                        + "..." + user.getBirthday().toLocaleString() + "..."
                       + user.getAddress());
           }
       } catch (IOException e) {
           e.printStackTrace();
       }

   }    /**
    *
    * @Title: addUser
   
    * @Description: TODO(添加用户)
    void     */
   public static void addUser() {        // 加载配置文件
       try {
           reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session
           session = sqlSessionFactory.openSession();            // 获取用户接口对象
           UserMapper userMapper = session.getMapper(UserMapper.class);            // 声明新用户
           User user =new User();
           user.setName("呵呵");
           user.setAge(22);
           String d="1984-09-23 20:23:22";
           SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
           Date date=sdf.parse(d);
           user.setBirthday(date);
           user.setAddress("不知道是哪的");
           userMapper.addUser(user);
           System.out.println("插入后的ID"+user.getId());            //提交事务            session.commit();
       } catch (IOException e) {
           e.printStackTrace();
       } catch (ParseException e) {            // TODO Auto-generated catch block            e.printStackTrace();
       }

   }    /**
    *
    * @Title: updateUser
   
    * @Description: TODO(修改用户)
    void     */
   public static void updateUser() {        // 加载配置文件
       try {
           reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session
           session = sqlSessionFactory.openSession();            // 获取用户接口对象
           UserMapper userMapper = session.getMapper(UserMapper.class);            // 调用查询方法
           User user = userMapper.selectUserById(6);
           user.setName("想起 来叫什么了");
           user.setAddress("魔都上海");            //更新            userMapper.updateUser(user);            //提交事务            session.commit();
       } catch (IOException e) {
           e.printStackTrace();
       }

   }    public static void detleUser() {        // 加载配置文件
       try {
           reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session
           session = sqlSessionFactory.openSession();            // 获取用户接口对象
           UserMapper userMapper = session.getMapper(UserMapper.class);        
           //删除
           userMapper.deleteUser(6);            //提交事务            session.commit();
       } catch (IOException e) {
           e.printStackTrace();
       }

   }

38.png

 以上就是MyBatis入门(一)---基本使用的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

12

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

4

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

18

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 3.1万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号