当前位置: 首页 > 后端技术 > Java

Mybatis-配置与集成

时间:2023-04-02 00:28:01 Java

前言本文将介绍如何搭建Mybatis测试工程,并在此基础上介绍Springboot集成Mybatis。正文一、Mybatis项目搭建1、创建数据库并创建表首先创建一个名为test的MySQL数据库,并在test数据库中创建一个book表。建表语句如下。CREATETABLEbook(idINT(11)PRIMARYKEYAUTO_INCREMENT,b_nameVARCHAR(255)NOTNULL,b_priceFLOATNOTNULL)然后往book表中插入三条数据,insert语句如下。INSERTINTObook(b_name,b_price)VALUES("Math",20.5)INSERTINTObook(b_name,b_price)VALUES("English",21.5)INSERTINTObook(b_name,b_price)VALUES("水浒传",30.5)以上数据用于待搭建的Mybatis项目后,测试是否可以基于Mybatis操作数据库中的数据。2、添加依赖,需要在POM文件中添加Mybatis依赖和数据库驱动依赖。POM文件中添加的依赖如下。org.mybatismybatis3.5.6mysqlmysql-connector-java8.0.16引入MySQL数据库驱动时,需要注意安装的MySQL数据库版本与驱动版本的匹配。具体关系见下表。Connector/JVersionDriverTypeJDBCVersionMySQLServerVersionStatus5.143.0,4.0,4.1,4.25.6,5.7,8.0Available8.044.25.6,5.7,8.0Recommended由于安装的MySQL数据库版本为8.0.26,根据官方推荐,使用的驱动版本为8.0.16,在为8.0版本的MySQL数据库驱动配置dataSource时,需要将driver属性设置为com.mysql.cj.jdbc.Driver,与com.mysql不同。5.1的jdbc.Driver。3、配置文件添加Mybatis相关依赖后,需要编写Mybatis配置文件mybatis-config.xml,如下图。如果不清楚配置文件的标签和含义,可以参考MyBatisXML配置,里面有Mybatis配置的详细说明4.实体类创建一个Book实体类,用于与book表进行映射,如图以下。@DatapublicclassBook{privatelongid;私人字符串书名;privatefloatbookPrice;}5.映射接口和映射文件是根据这种方式来注册的,这种方式要求映射接口和映射文件需要有同名且在同一目录下,所以这里写一个名为BookMapper的映射接口,并写一个名为BookMapper.xml的映射文件。BookMapper的映射接口如下图所示。publicinterfaceBookMapper{ListselectAllBooks();}映射文件BookMapper.xml如下所示。SELECTb.id,b.b_name,b.b_priceFROMbookb由于maven默认不打包src/main/java下的非Java文件,所以需要在POM文件中做如下配置,实现同映射文件并打包它。src/main/java**/*.xmlfalse6.项目结构整个项目结构如下。MybatisTest类用于测试查询功能,如下所示。publicclassMybatisTest{publicstaticvoidmain(String[]args)throwsException{Stringresource="mybatis-config.xml";SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(Resources.getResourceAsFactory(resource));SqlSessiontorysqlSession=.openSession();BookMapperbookMapper=sqlSession.getMapper(BookMapper.class);Listbooks=bookMapper.selectAllBooks();books.forEach(book->System.out.println(book.toString()));}}这里要特别注意Resources.getResourceAsStream()这个方法,其注解如下。将类路径上的资源作为Stream对象返回。即Resources.getResourceAsStream()方法会加载classpath下的配置文件,然后在MybatisTest测试类中,会去classpath下加载名为mybatis-config.xml的配置文件。现在先编译整个工程,查看编译后的目录结构,如下图。这样Mybatis的配置文件就可以读取成功了。现在执行MybatisTest测试类,结果如下。以上结果说明整个测试工程搭建成功,可以通过Mybatis操作数据库了。2、Springboot与Mybatis的集成Mybatis提供了一个与Springboot集成的starter。基于启动器,可以方便的使用Mybatis。本节将介绍Mybatis与Springboot的集成。首先在POM文件中引入Mybatislauncher,如下图。org.mybatis.spring.bootmybatis-spring-boot-starter2.1.3最终测试基于onrest工具调用接口触发对数据库的操作,所以也需要引入web依赖,如下图。org.springframework.bootspring-boot-starter-web2.4.1是使用mybatis-spring-之后boot-starter启动器,无需为Mybatis提供单独的配置文件。Mybatis的配置可以直接写在application.yml中。如果application.yml中没有Mybatis的配置,那么Mybatis的所有配置项都会使用默认值。同时dataSource的配置不需要在Mybatis中配置,可以按照Springboot配置数据源的方式进行配置。application.yml文件内容如下。spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false用户名:root密码:rootmybatis:配置:use-generated-keys:true这节中映射接口BookMapper和映射文件BookMapper.xml与实体类Book和第一节完全一样,这里就不赘述了,大家需要在Springboot启动类中添加@MapperScan注解指定映射文件所在目录,如下图。@SpringBootApplication@MapperScan("com.mybatis.learn.dao")publicclassMybatisLearnApplication{publicstaticvoidmain(String[]args){SpringApplication.run(MybatisLearnApplication.class,args);}}至此集成结束,整个工程结构如下图所示。服务层和控制器层用于测试。MybatisService的实现如下所示。@ServicepublicclassMybatisService{@AutowiredprivateBookMapperbookMapper;publicListselectAllBooks(){返回bookMapper.selectAllBooks();}}集成成功后,可以从Spring容器中获取到各个映射接口的映射实例,所以映射接口BookMapper的映射实例是在MybatisService中通过注入获取的。MybatisController的实现如下所示。@RestControllerpublicclassMybatisController{@AutowiredprivateMybatisServicemybatisService;@RequestMapping(value="/api/v1/selectall",method=RequestMethod.GET)publicResponseEntity>selectAllBooks(){List书籍;尝试{books=mybatisService.selectAllBooks();}catch(Exceptione){returnnewResponseEntity<>(null,HttpStatus.INTERNAL_SERVER_ERROR);}returnnewResponseEntity<>(books,HttpStatus.OK);}}最后基于rest工具调用接口,结果如下。总结本文介绍了如何通过在Maven项目中引入Mybatis依赖包来构建连接数据库的测试项目,然后演示了Mybatis与Springboot的集成。无论是哪种方式,通过Mybatis操作数据库都比传统的JDBC方式具有更加方便和强大的特性。