spring boot整合mybatis,简述使用spring整合mybatis的基本步骤
目录
1 依赖配置注射毒品使用2.1跳靴配置整合mybatis:2.2跳趾注解整合mybatis:2.3在配置类上增加@MapperScan注解,扫描某个包下的全部制图人文件:总结
1 依赖配置
父groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-parent/artifact id版本2。5 .4/版本/父依赖项依赖项groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-web/artifact id/依赖项groupIdorg.projectlombok/groupId artifact id lombok/artifact id版本1。18 .22/version/dependency groupIdorg.mybatis.spring.boot/groupId artifactId mybatis-spring-boot-starter/artifactId版本1。3 .2/版本/依赖关系!春天连接驱动时,如com.mysql.cj.jdbc.Driver使用-依赖关系groupId MySQL/groupId artifact id MySQL-connector-Java/artifact id作用域运行时/作用域/依赖性依赖关系groupIdorg.springframework.boot/groupId artifact id spring-boot-configuration-processor/artifact id选项true/optional/dependency/dependencies找到我的巴蒂斯-弹簧靴-起动器配置的依赖,即自动配置包,跳靴的自动配置,会找到元信息下的春天。工厂,找到启用自动配置对应的类:
可知自动配置类为MybatisAutoConfiguration:
查看配置绑定类MybatisProperties,可知yml中前缀配置为mybatis:
可知,mybatis前缀的阳明海运股份有限公司配置,可以配置属性,比如:configLocation、mapperLocations、typeAliasesPackage等等。
框架下,又具有@NestedConfigurationProperty成员变量,故而前缀是mybatis.configuration,
其中具有如下属性:
其中有非常熟悉的属性:mapUnderscoreToCamelCase
,也就是数据库字段下划线转驼峰的配置。
然后,数据源有如下配置:
数据源的配置绑定是DataSourceProperties
:
可知,数据源在yml中以spring.datasource
为前缀,可配置连接数据源的driverClassName
、url
、username
、password
等参数。
2 使用
2.1 SpringBoot配置整合mybatis:
建表:
实体类(mybatis本质上将数据库表的数据和实体类对应,就是依靠的getter和setter,所以@Data是必须有的):
package com.xiaoxu.boot.dto;import lombok.Data;import java.util.Date;/** * @author xiaoxu * @date 2022-03-08 * spring_boot:com.xiaoxu.boot.dto.PeopleDTO */@Datapublic class PeopleDTO { // 人的id编号 long id; // 人的名字 String myName; // 年龄 int myAge; // 出生日期 Date birthday;}
新建Mapper接口:
注意mapper接口必须要有@Mapper注解:
package com.xiaoxu.boot.mapper;import com.xiaoxu.boot.dto.PeopleDTO;import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapperpublic interface PeopleMapper { List<PeopleDTO> queryPeopleByAge(int age);}
在resources目录下准备mybatis的配置文件,以及Mapper文件:
mybatis-confi.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration></configuration>
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.xiaoxu.boot.mapper.PeopleMapper"> <select id="queryPeopleByAge" resultType="com.xiaoxu.boot.dto.PeopleDTO"> select * from my_people where my_age = #{age} </select></mapper>
在application.yml中配置如下:
spring: datasource: username: root password: ****** url: jdbc:mysql://localhost:3306/xiaoxu?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver#mybatis的相关配置mybatis: #mapper配置文件 mapper-locations: classpath:mapper/*.xml# #mybatis配置文件# config-location: classpath:mybatis-config.xml# config-location和configuration不能同时存在 #开启驼峰命名 configuration: map-underscore-to-camel-case: true
插入测试数据:
service层实现:
package com.xiaoxu.service;import com.xiaoxu.boot.dto.PeopleDTO;import com.xiaoxu.boot.mapper.PeopleMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;/** * @author xiaoxu * @date 2022-03-08 * spring_boot:com.xiaoxu.service.PeopleService */@Servicepublic class PeopleService { @Autowired PeopleMapper peopleMapper; public List<PeopleDTO> getPeoples(int Age){ return peopleMapper.queryPeopleByAge(Age); }}
controller层实现:
package com.xiaoxu.boot.controller;import com.xiaoxu.boot.dto.PeopleDTO;import com.xiaoxu.service.PeopleService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;/** * @author xiaoxu * @date 2022-03-08 * spring_boot:com.xiaoxu.boot.controller.PeopleController */@RestControllerpublic class PeopleController { @Autowired PeopleService peopleService; @GetMapping("/people") public List<PeopleDTO> queryPeople(@RequestParam(value = "ag") int age){ return peopleService.getPeoples(age); }}
执行结果无误:
2.2 SpringBoot注解整合mybatis:
修改Mapper接口文件:
package com.xiaoxu.boot.mapper;import com.xiaoxu.boot.dto.PeopleDTO;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Select;import java.util.List;@Mapperpublic interface PeopleMapper { List<PeopleDTO> queryPeopleByAge(int age); @Select("select * from my_people") List<PeopleDTO> queryAllPeople();}
修改服务层:
package com.xiaoxu.service;import com.xiaoxu.boot.dto.PeopleDTO;import com.xiaoxu.boot.mapper.PeopleMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;/** * @author xiaoxu * @date 2022-03-08 * spring_boot:com.xiaoxu.service.PeopleService */@Servicepublic class PeopleService { @Autowired PeopleMapper peopleMapper; public List<PeopleDTO> getPeoples(int Age){ return peopleMapper.queryPeopleByAge(Age); } public List<PeopleDTO> getAllPeople(){ return peopleMapper.queryAllPeople(); }}
增加controller:
package com.xiaoxu.boot.controller;import com.xiaoxu.boot.dto.PeopleDTO;import com.xiaoxu.service.PeopleService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;/** * @author xiaoxu * @date 2022-03-08 * spring_boot:com.xiaoxu.boot.controller.PeopleController */@RestControllerpublic class PeopleController { @Autowired PeopleService peopleService; @GetMapping("/people") public List<PeopleDTO> queryPeople(@RequestParam(value = "ag") int age){ return peopleService.getPeoples(age); } @GetMapping("/allPeople") public List<PeopleDTO> queryAllPeople(){ return peopleService.getAllPeople(); }}
结果返回无误:
2.3 在配置类上增加@MapperScan注解,扫描某个包下的全部Mapper文件:
如果每个Mapper接口文件上增加@Mapper比较麻烦,那么可以在配置类,如主程序类上,增加@MapperScan注解,以及扫描路径,效果和@Mapper一致:
主程序类增加@MapperScan注解:
重新执行效果一致:
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。