广州技术支持:网站建设,网站建设兰州,汽车网站 源码,网站开发三个月能学会吗1.使用通用mapper可以更快速的进行数据库的增删查改操作,加入springboot的管理,常规的SQL都可以复用 2.整合 a)引入依赖 dependenciesdependencygroupIdtk.mybatis/groupIdartifactIdmapper-spring-boot-starter/artifactId…1.使用通用mapper可以更快速的进行数据库的增删查改操作,加入springboot的管理,常规的SQL都可以复用 2.整合 a)引入依赖 dependenciesdependencygroupIdtk.mybatis/groupIdartifactIdmapper-spring-boot-starter/artifactIdversion2.0.2/version/dependency
!--Mybatis依赖--!--Mybatis依赖--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion1.3.2/version/dependency
!--数据库连接依赖--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version/dependency
!--springboot整合web依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusionsexclusiongroupIdorg.springframework/groupIdartifactIdspring-core/artifactId/exclusionexclusiongroupIdorg.springframework/groupIdartifactIdspring-beans/artifactId/exclusion/exclusions/dependency/dependencies1)注意:这里由于引入的依赖包含好多spring有关的依赖,导致spring的版本可能不兼容.因此还需要增加以下标签,实现对所有有关spring的依赖版本的管理,使版本一一致或兼容
!--统一管理springboot版本--parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.0.5.RELEASE/versionrelativePath//parentb)配置文件
server:port: 8080
#jdbc
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/project1?useUnicodetruecharacterEncodingutf8username: rootpassword: 123456
#mybatis
mybatis:type-aliases-package: com.brant.entity
#通用mapper配置
mapper:mappers: com.brant.basedao.IBaseDaoidentity: MYSQL
c)配置启动类,这里需要注意MapperScan需要引入tk的包
SpringBootApplication
MapperScan({com.brant.dao})
public class MyApplication {public MyApplication() {}public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}d)建立src目录 e)生成数据库和表cities 1)sql
create table cities(id int primary key auto_increment,cityid varchar(20) not null,city varchar(20) not null,provinceid varchar(20) not null
);INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 110100, 市辖区, 110000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 110200, 县, 110000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 120100, 市辖区, 120000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 120200, 县, 120000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130100, 石家庄市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130200, 唐山市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130300, 秦皇岛市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130400, 邯郸市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130500, 邢台市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130600, 保定市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130700, 张家口市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130800, 承德市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 130900, 沧州市, 130000);
INSERT INTO cities(id, cityid, city, provinceid) VALUES (null, 131000, 廊坊市, 130000);)建立实体类映射,并实现序列化
Repository
Table(name cities)
public class Citiy implements Serializable {IdGeneratedValue(strategy GenerationType.IDENTITY)Column(name id)private Integer id;Column(name cityid)private String cityId;Column(name city)private String city;Column(name provinceid)private String provinceId;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getCityId() {return cityId;}public void setCityId(String cityId) {this.cityId cityId;}public String getCity() {return city;}public void setCity(String city) {this.city city;}public String getProvinceId() {return provinceId;}public void setProvinceId(String provinceId) {this.provinceId provinceId;}Overridepublic String toString() {return Cities{ id id , cityId cityId \ , city city \ , provinceId provinceId \ };}
})依次编写业务控制层,服务业务层和mapper层
Controller
RequestMapping(/city)
public class CityController {Autowiredprivate ICityService iCityService;Autowiredprivate Cities cities;RequestMapping(method RequestMethod.GET,path /selectAll)ResponseBodypublic ListCities selectAll(){return iCityService.selectAll();}RequestMapping(method RequestMethod.GET,path /selectOne/{id})ResponseBodypublic Cities selectOne(PathVariable int id){cities.setId(id);return iCityService.selectOne(cities);}}public interface ICityService {ListCities selectAll();Cities selectOne(Cities cities);
}Service
public class CityServiceImpl implements ICityService {Autowiredprivate ICityDao cityDao;Overridepublic ListCities selectAll() {return cityDao.selectAll();}Overridepublic Cities selectOne(Cities cities) {return cityDao.selectOne(cities);}
}/*** author brant* date 2023/3/5 01:38* 这里如果要使用mapper自己封装的方法,不要重写方法.否则会报错 Invalid bound statement (not found)*/
Component
public interface ICityDao extends IBaseDaoCities{}public interface IBaseDaoT extends MapperT,MySqlMapperT {
}1)注意:由于这里使用了mapper的自己的方法,因此在写dao层时不需要重写方法了,否则spring会找不到mapper的方法.这时的dao也要添加Component注解,交给spring管理 )使用postman完成接口测试 )总结,在使用通用mapper时需要注意以下几点 1)检查application.yml文件配置是否正确 2)检查dao方法(这里排查了1h,很难排查) 3)MapperScan导包tk 4)pom文件要加入springboot版本管理