目录
前言
一、查询所有用户
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 + '\'' +" ]";} }
// 查询所有用户List findAll();
在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);}

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

SqlSessionFactoryBuilder
SqlSession工厂构建者对象,使用构造者模式创建SqlSession工厂对象。
SqlSessionFactory
SqlSession工厂,使用工厂模式创建SqlSession对象。
SqlSession
该对象可以操作数据库,也可以使用动态代理模式创建持久层接口的代理对象操作数据库。
Mapper
持久层接口的代理对象,他具体实现了持久层接口,用来操作数据库。
创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder对象构建了SqlSessionFactory对象: 构造者模式
SqlSessionFactory对象生产了SqlSession对象:工厂模式
SqlSession对象创建了持久层接口的代理对象:动态代理模式
代理对象操作数据库
除了代理对象能够操作数据库,SqlSession也能操作数据库。只是这种方式在开发中使用的较少,接下来我们使用SqlSession操作数据库:
// SqlSession直接操作数据库List users = session.selectList("com.itbaizhan.mapper.UserMapper.findAll");users.forEach(System.out::println);
这样也可以的,上面的是我们用的是调用接口方法执行。
持久层添加新增用户方法
// 添加用户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();}
持久层添加用户信息更改方法
// 更新用户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();}
持久层添加删除用户方法
// 删除用户void delete(int userId);
映射文件新增标签
delete from user where id = #{id}
在测试类新增方法测试一下
注意:这里一定要执行提交事务方法
// 测试删除用户方法@Testpublic void testDelete() throws Exception{int userId = 7;userMapper.delete(userId);// 提交事务session.commit();}
持久层添加删除用户方法
// 根据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入门案例就写到这里了,感谢大家的认真浏览到这里的小伙伴,如果觉得觉得对你有帮助就三连支持一下吧!
上一篇:经典故事改编