MyBatis 的SqlSession通用写法手记
前期准备
(连接工具类、显示信息方法、格式化日期方法)
// 工具类:MyBatisUtil
public class MyBatisUtil {
private static SqlSessionFactory factory = null;
/* 👆SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例.每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心*/
static {
try {
String resource = "xml配置文件(JDBC)";
// 读取
InputStream is = Resources.getResourceAsStream(resource);
// 通过 SqlSessionFactoryBuilder 获得SqlSessionFactory 的实例
factory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
// 打开会话
public static SqlSession openSession() {
if (factory != null) {
return factory.openSession();
}
return null;
}
}
// 显示用户信息
private void pringUser(List<User> users) {
// 使用List的形式导入用户信息形式如:{user1},{user2}这样
System.out.println("ID\t姓名\t年龄\t生日");
// 遍历list,得到所有人的信息,打印出来
for (User user : users) {
System.out.println(user.getId()+"\t"+user.getName() + "\t" + user.getAge() + "\t" + dateToString(user.getBirth()));
}
}
// 格式化日期:把日期转换为字符串
private String dateToString(Date date) {
// 把Date转成字符串的形式
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd");
// 转换完成,打包返回。
return sdf.format(date);
}
这里第一个工具类需要创建一个新的Class,而接下来的两个方法写到Test方法内即可
增删查改四类写法
查询写法
// 大多数session会话写法 👉 [查询]
SqlSession session = null;//必须要做!
try{
session = 工具类.打开会话();//必须要做!
Dao接口 mapper = ssion.getMapper(Dao接口.class);
// 括号内的class是将XML的方法映射到mapper中👆,用于mapper.方法名
User类 user = mapper.方法名称(接口方法,要带上参数)
打印方法(Arrays.asList(user));
}catch (Exception e) {
// 抛出异常
e.printStackTrace();
} finally {
session.close();
// 关闭会话
}
删除写法
// 大多数session会话写法 👉 [删除]
SqlSession session = null;// 必须要做!
try{
session = 工具类.打开会话(); // 必须要做!
Dao接口 mapper = ssion.getMapper(Dao接口.class);
// 括号内的class是将XML的方法映射到mapper中👆,用于mapper.方法名
mapper.删除的方法名(删除的ID);
session.commit(); // commit : 手动提交
}catch (Exception e) {
// 抛出异常
e.printStackTrace();
} finally {
session.close();
// 必须要做!
// 关闭会话
}
增加写法
// 大多数session会话写法 👉 [增加]
SqlSession session = null;// 必须要做!
try{
session = 工具类.打开会话(); // 必须要做!
Dao接口 mapper = ssion.getMapper(Dao接口.class);
// 括号内的class是将XML的方法映射到mapper中👆,用于mapper.方法名
/**正片部分:这里开始添加要加入的值*/
User类 user = new User();
user.setName("小杨");
user.setAge(18);
user.setBirth(时间)
mapper.addUser增加方法名(user); // user打包带走,提交~
session.commit(); // 最后commit : 手动提交
}catch (Exception e) {
// 抛出异常
e.printStackTrace();
} finally {
session.close();
// 必须要做!
// 关闭会话
}
修改写法(更新)
// 大多数session会话写法 👉 [修改]
// 这一块其实和增加没太大区别,唯一区别就是mapper.方法名不同
SqlSession session = null;// 必须要做!
try{
session = 工具类.打开会话(); // 必须要做!
Dao接口 mapper = ssion.getMapper(Dao接口.class);
// 括号内的class是将XML的方法映射到mapper中👆,用于mapper.方法名
/**正片部分:这里开始添加要改的值*/
User类 user = new User();
user.setName("王校长");
user.setAge(28);
user.setBirth(时间)
mapper.update方法名(user); // user打包带走,提交~
session.commit(); // 最后commit : 手动提交
}catch (Exception e) {
// 抛出异常
e.printStackTrace();
} finally {
session.close();
// 必须要做!
// 关闭会话
}
运行效果:
增加:
//准备的数据
User user = new User();
user.setId(6);
user.setName("汪汪");
user.setAge(5);
user.setBirth(new Date());
mapper.addUser(user);
效果:
修改:(我们对汪汪下手)
//准备的数据
User user = new User();
user.setId(5);
user.setName("汪汪喵喵");
user.setAge(25);
user.setBirth(new Date());
mapper.updateUser(user);
查询:
删除:
User user = new User();
user.setId(6);
user.setName("汪汪");
user.setAge(25);
user.setBirth(new Date());
mapper.deleteUser(user);
菜某 完成于 2020年10月20日17点00分