Mybatis入门案例【超详细】
创始人
2025-06-01 21:15:38

目录

前言

一、查询所有用户

1. 持久层添加查询所有方法

2. 在UserMapper.xml映射文件添加查询语句

3. 测试方法

4. 运行结果

二、MyBatis核心对象及工作流程

1. MyBatis核心对象

2. MyBatis工作流程

3. 使用SqlSession操作数据库

三、添加其他常见方法

1. Mybatis新增用户

2. Mybatis用户更改

3. Mybatis删除用户

4. Mybatis根据用户id查询


前言

        在原来上一篇的基础上,我们需要新建一个数据库mybatis,在该数据库下新建一个user表,并插入数据,如下图所示!

        还要新建一个实体类User

package com.mybatisstudy.pojo;public class User {private int id;private String username;private String sex;private String address;public User(String programmer, String man, String shangHai) {this.username = programmer;this.sex = man;this.address = shangHai;}public User(int i, String programmer_1, String woman, String shenzhen) {this.id = i;this.username = programmer_1;this.sex = woman;this.address = shenzhen;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User[ " +"id=" + id +", username='" + username + '\'' +", sex='" + sex + '\'' +", address='" + address + '\'' +" ]";}
}

一、查询所有用户

1. 持久层添加查询所有方法

// 查询所有用户List findAll();

2. 在UserMapper.xml映射文件添加查询语句

3. 测试方法

        在test包下新建一个测试类TestUserMapper.java,注意测试类需要插入一个Junit依赖

import com.mybatisstudy.mapper.UserMapper;
import com.mybatisstudy.pojo.User;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.InputStream;
import java.util.List;public class TestUserMapper {InputStream is = null;SqlSession session = null;UserMapper userMapper = null;//前置方法,不必重复代码@Beforepublic void before() throws Exception {System.out.println("前置方法执行·············");// (1)读取核心配置文件is = Resources.getResourceAsStream("SqlMapConfig.xml");// (2)创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象SqlSessionFactory factory = builder.build(is);// (4)SqlSessionFactory对象获取SqlSession对象session = factory.openSession();// (5)SqlSession对象获取代理对象userMapper = session.getMapper(UserMapper.class);}//后置方法,释放资源@Afterpublic void after() throws Exception {System.out.println("后置方法执行·············");session.close();is.close();}// 测试查询所有用户的方法@Testpublic void testFindAll() throws Exception{// 代理对象执行方法List all = userMapper.findAll();all.forEach(System.out::println);}

4. 运行结果

        OK,下面我们来详细解释一下前置方法,前置方法也是MyBatis核心对象和工作流程

二、MyBatis核心对象及工作流程

1. MyBatis核心对象

SqlSessionFactoryBuilder

SqlSession工厂构建者对象,使用构造者模式创建SqlSession工厂对象。

SqlSessionFactory

SqlSession工厂,使用工厂模式创建SqlSession对象。

SqlSession

该对象可以操作数据库,也可以使用动态代理模式创建持久层接口的代理对象操作数据库。

Mapper

持久层接口的代理对象,他具体实现了持久层接口,用来操作数据库。

2. MyBatis工作流程

创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder对象构建了SqlSessionFactory对象: 构造者模式

SqlSessionFactory对象生产了SqlSession对象:工厂模式

SqlSession对象创建了持久层接口的代理对象:动态代理模式

代理对象操作数据库

3. 使用SqlSession操作数据库

        除了代理对象能够操作数据库,SqlSession也能操作数据库。只是这种方式在开发中使用的较少,接下来我们使用SqlSession操作数据库:

// SqlSession直接操作数据库List users = session.selectList("com.itbaizhan.mapper.UserMapper.findAll");users.forEach(System.out::println);

         这样也可以的,上面的是我们用的是调用接口方法执行。

三、添加其他常见方法

1. Mybatis新增用户

持久层添加新增用户方法

// 添加用户void add(User user);

映射文件新增标签

    insert into user(username,sex,address) values(#{username},#{sex},#{address})

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试新增用户方法@Testpublic void testAdd() throws Exception {User user = new User("programmer","man","ShangHai");userMapper.add(user);//提交事务session.commit();}

2. Mybatis用户更改

持久层添加用户信息更改方法

// 更新用户void update(User user);

映射文件新增标签

    update user setusername = #{username},sex = #{sex},address = #{address}where id = #{id}

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试更新用户方法@Testpublic void testUpdate() throws Exception{User user = new User(7,"programmer_1","woman","Shenzhen");userMapper.update(user);//提交事务session.commit();}

3. Mybatis删除用户

持久层添加删除用户方法

// 删除用户void delete(int userId);

映射文件新增标签

    delete from user where id = #{id}

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试删除用户方法@Testpublic void testDelete() throws Exception{int userId = 7;userMapper.delete(userId);// 提交事务session.commit();}

4. Mybatis根据用户id查询

持久层添加删除用户方法

// 根据ID查询用户User findById(int userId);

映射文件新增标签

    

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试根据用户查询Id@Testpublic void testFindById() throws Exception{int userId = 1;User user = userMapper.findById(userId);System.out.println(user);}

        OK,本次Mybatis入门案例就写到这里了,感谢大家的认真浏览到这里的小伙伴,如果觉得觉得对你有帮助就三连支持一下吧!

相关内容

热门资讯

投资者提问:请问董秘,当前中日... 投资者提问:请问董秘,当前中日关系陷入僵局乃至谷底之际,公司有规划更多使用国产光刻胶等材料来替代日系...
富德生命人寿咸阳中心支公司被罚... 12月16日金融一线消息,据咸阳金融监管分局行政处罚信息公开表显示,富德生命人寿保险股份有限公司咸阳...
市场监管总局:抓紧推进出台《互... 转自:北京日报客户端记者16日从市场监管总局获悉,市场监管总局正抓紧推进《互联网平台反垄断合规指引》...
天奇股份:锂电循环业务夯实产业... 12月16日,江西天奇金泰阁集团(简称“天奇金泰阁”)资本赋能发展大会在江西龙南举行。会上,天奇股份...
「侠客岛」他们用上了“AI分身...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:海外网)来源...