当前位置: 首页 > 科技观察

Mybatis_day06:Mybatis集成Spring

时间:2023-03-12 12:13:44 科技观察

MyBatis-Spring将帮助您将MyBatis代码无缝集成到Spring中。它会让MyBatis参与Spring的事务管理,创建mappers和SqlSession并注入到bean中,将Mybatis的异常转换为Spring的DataAccessException。最终,有可能拥有不依赖于MyBatis、Spring或MyBatis-Spring的应用程序代码。Mybatis融入了spring整合的思想SqlSessionFactory对象应该作为单例放在spring容器中。在传统的dao开发方式中,应该从spring容器中获取sqlsession对象。采用Mapper代理的形式,应该直接从spring容器中获取mapper的代理对象。数据库连接和数据库连接池的事务管理都交给spring容器来完成。集成需要的jar包Springjar包Mybatisjar包Spring+mybatis集成包。mysql数据库驱动jar包。数据库连接池的jar包。集成步骤第一步:创建java项目。第二步:导入jar包。(上面提到的jar包)第三步:Mybatis配置文件sqlmapConfig.xml第四步:编写Spring配置文件1、数据库连接和连接池2、事务管理(暂不配置)3、sqlsessionFactory对象,在spring容器中配置4.在spring容器中配置mapeer代理对象或dao实现类。第五步:写dao或者mapper文件第六步:测试。SqlMapConfig.xmlapplicationContext.xmldb.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8jdbc.username=rootjdbc.password=rootDao还有DAO开发的三种实现方式:1.传统DAO开发方式2.使用mapper代理形式开发方式3.使用scan包配置mapper代理传统DAO开发方式接口+实现类来完成。dao实现类需要继承SqlsessionDaoSupport类Dao实现类publicclassUserDaoImplextendsSqlSessionDaoSupportimplementsUserDao{@OverridepublicUserfindUserById(intid)throwsException{SqlSessionsession=getSqlSession();Useruser=session.selectOne("test.findUserByPring/sion"containercannotbeclosed,id)来完成//session.close();returnuser;}@OverridepublicvoidinsertUser(Useruser)throwsException{SqlSessionsession=getSqlSession();session.insert("test.insertUser",user);session.commit();//session.close();}}配置dao将dao实现类配置到spring容器中"re??f="sqlSessionFactory"/>测试方法初始化:privateApplicationContextapplicationContext;@BeforepublicvoidsetUp()throwsException{StringconfigLocation="classpath:spring/ApplicationContext.xml";//初始化spring运行环境applicationContext=newClassPathXmlApplicationContext(configLocation);}Measurement尝试:@TestpublicvoidtestFindUserById()throwsException{UserDaouserDao=(UserDao)applicationContext.getBean("userDao");Useruser=userDao.findUserById(1);System.out.println(user);}1.Mapper代理形式开发daoa。开发mapper接口开发mapper文件配置mapper代理**测试方法publicclassUserMapperTest{privateApplicationContextapplicationContext;@BeforepublicvoidsetUp()throwsException{applicationContext=newClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");**}@TestpublicvoidtestGetUserById(){UserMapperuserMapper=applicationContext.getBean(UserMapper.class);Useruser=userMapper.getUserById(1);System.out.println(user);}}扫包配置mapper每个mapper的代理对象的id为类名,首字母小写【编辑推荐】TIOBE11月榜单:Python挤掉Java!React并发模式三元组:what/why/howtodoLinux高性能网络编程TCP连接内存使用Python曾经是程序员的“瑞士军刀”,现在正在慢慢被取代全球疫情下的网络安全:警惕“拿趁火打劫”网络攻击