Mybatis学习笔记(二)-增删改的操作 -对SqlSession的优化封装-优化代码
2021/6/5 2:21:46
本文主要是介绍Mybatis学习笔记(二)-增删改的操作 -对SqlSession的优化封装-优化代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Mybatis学习笔记(二)-增删改的操作 -对SqlSession的优化封装-优化代码
1.对SqlSession的优化封装
从上一篇可以看到测试类有大量的代码冗余,那接下来对SqlSession的创建过程进行封装
1.使用了静态代码块,随着类的加载而执行,而且只执行一次,由于工厂对象是一个超级重量级资源,所以创建一次就足够了,在类加载时候创建它
2.和原来代码比起来有以下特点,减少了工厂的创建次数,减少了代码量,从下面编码可以看到减少了大约一半的代码,使其更加优雅
3.扩展:如果需要确定DAO和Service的使用的是不是同一个Connection对象可以把Sqlsession加进本地线程里面,这里就不加了(懒)
package MybaitsUtil; 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; //获取sqlseesiopn对象的封装 public class Mybatisutil { public static SqlSessionFactory sqlSessionFactory; //用于对创建工厂 static { try { sqlSessionFactory=null; String resource = "Mybatis.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //返回SqlSession public static SqlSession getSqlSession() { SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } //关闭SqlSession public static void close(SqlSession sqlSession) { if (sqlSession != null) { sqlSession.close(); } } }
2.增删改的操作
依然使用上一篇的代码,对Mybatis的操作基本步骤:
- 在接口中声明方法
- 在对应接口配置文件中编写Sql
- 调用
1.增加记录操作
-
在接口中声明方法
由于我们要增加记录,所以把记录存在实体类对象中,注意必须返回值是void(坑)
void InsertStudentinfo(StudentModle studentModle);
-
在对应接口配置文件中编写Sql
1.指定ID为接口中对应的方法
2.指定参数类型parameterType为类:MyFirstMybatisApplication.Bean.StudentModle,用于对应的mapper接口方法接受的参数类型
3.注意点:SQL参数必须和实体类的成员变量对应,因为我们是通过实体类传递信息,否则会抛出 There is no getter for property named xxx in xxx
<insert id="InsertStudentinfo" parameterType="MyFirstMybatisApplication.Bean.StudentModle"> insert into student (id,name,email,age) values( #{id},#{name},#{email},#{age}) </insert>
-
调用
1.给对应需要的字段赋值即可,没有对应赋值的在传输实体类时候,没有赋值的值为null
2.此处对代码进行了异常处理,如果出现问题会回滚事务
3.注意对增删改操作进行事物的提交
public void test7() { //Sqlseesion的创建,可以发现明显少打几行代码 SqlSession sqlSession = Mybatisutil.getSqlSession(); StudentDAO studentDAO = sqlSession.getMapper(StudentDAO.class); try { StudentModle studentModle = new StudentModle(); studentModle.setId(1); studentModle.setEmail("Ilovedyou@before.com"); studentModle.setAge(22); studentModle.setName("DZYS"); studentDAO.InsertStudentinfo(studentModle); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); } }
2.删除记录操作
具体操作和上面差不多,以及注意点
-
在接口中声明方法
void DeleStudentinfo(StudentModle studentModle);
-
在对应接口配置文件中编写Sql
<delete id="DeleStudentinfo" parameterType="MyFirstMybatisApplication.Bean.StudentModle"> DELETE from student where id=#{id} </delete>
-
调用
public void test6() { SqlSession sqlSession = Mybatisutil.getSqlSession(); StudentDAO studentDAO = sqlSession.getMapper(StudentDAO.class); try { StudentModle studentModle = new StudentModle(); studentModle.setId(1); studentDAO.DeleStudentinfo(studentModle); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); } }
3.修改记录操作
-
在接口中声明方法
void UpdateStudentinfo(StudentModle studentModle);
-
在对应接口配置文件中编写Sql
- 依然要注意sql参数和实体类对应
<update id="UpdateStudentinfo" parameterType="MyFirstMybatisApplication.Bean.StudentModle"> update student set name=#{name},age=#{age} where id=#{id} </update>
-
调用
public void test5() { SqlSession sqlSession = Mybatisutil.getSqlSession(); StudentDAO studentDAO = sqlSession.getMapper(StudentDAO.class); try { StudentModle studentModle = new StudentModle(); studentModle.setId(1); studentModle.setAge(22); studentModle.setName("DZYS"); studentDAO.UpdateStudentinfo(studentModle); sqlSession.commit(); System.out.println("studentModle = " + studentModle); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); } }
基本就这个套路
之前看一些老的教程发现如果传输空值会报错,比如在数据库中某个值不像给它有值,只想给它弄个null,那么在实体类传输就设置null到对应参数会报错
查阅资源得知:jdbcType这东西,需要在sql参数中指定和实体类对应的参数,那么jdbcType怎么和java内置参数对应呢?
这里有个表,来自于:http://blog.csdn.net/loongshawn/article/details/50496460
可以查阅
不过我在使用最新版本Mybatis没有出现这个情况,我的版本是5.3.7
这篇关于Mybatis学习笔记(二)-增删改的操作 -对SqlSession的优化封装-优化代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南