首先引入相应的依赖(创建SpringBoot项目这里就不再多说了)
修改pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
配置
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/system_map?&allowMultiQueries=true&useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=(密码)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
这里的system_map为数据库对应的表名
结构目录
首先写实体层entity
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Building {
// 与表中字段名一一对应
@TableId(value="building_id", type = IdType.AUTO)
private Integer buildingId;
@TableField(value="park_id")
private Integer parkId;
@TableField(value="building_name")
private String buildingName;
@TableField(value="geojson")
private String geojson;
@TableField(value="osm_id")
private Integer osmId;
@TableField(value="description")
private String description;
}
对应的数据库表结构
其中@Data为lombok注解,可以省略get,set方法。
service层
结构
接口
List<Building> findAllBuildings();
Building findByBuildingId(int bId);
void deleteByBuildingId(int bId);
void addBuilding(Building building);
void updateBuilding(Building building);
实现接口类
@Service
public class BuildingServiceImpl implements BuildingService {
@Autowired
private BuildingMapper buildingMapper;
@Override
public List<Building> findAllBuildings() {
return buildingMapper.findAllBuildings();
}
//根据building的ID查询building
@Override
public Building findByBuildingId(int bId) {
return buildingMapper.selectById(bId);
}
//根据building的ID删除building
@Override
public void deleteByBuildingId(int bId) {
if("null".equals(String.valueOf(bId)) || bId <= 0){
}
buildingMapper.deleteById(bId);
}
//添加
@Override
public void addBuilding(Building building) {
buildingMapper.insert(building);
}
//修改
@Override
public void updateBuilding(Building building) {
buildingMapper.updateById(building);
}
Mapper层
注意上面的service层中的实现接口类中调用的都是MyBatis Plus中的方法,
也就是需要extends BaseMapper<实体类名>,下面的注解Sql语句为MyBatis的使用方法,只需要在service层中的实现接口类中调用相应的方法名即可。
@Mapper
@Repository
public interface BuildingMapper extends BaseMapper<Building> {
//列出全部building
@Select("select * from building")
List<Building> findAllBuildings();
//查
@Select("select * from building where building_id = #{bId}")
Building findByBuilingId(int bId);
//删
@Delete("delete from building where building_id = #{bId}")
void deleteByBuildingId(int bId);
// 增
@Insert("insert into building (building_id,park_id,building_name,geojson,osm_id,description) " +
"values (#{buildingId},#{parkId},#{buildingName},#{geojson},#{osmId},#{description})")
void addBuilding(Building building);
//改
@Update("update building set building_name=#{building_name}, geojson=#{geojson},department=#{department},osm_id=#{osmId},park_id=#{parkId} where building_id=#{buildingId}")
void updateBuildingById(Building building);
}
Controller层
@Controller
@ResponseBody
@Slf4j
public class BuildingController {
@Autowired
private BuildingService buildingService;
//查 查询全部
@CrossOrigin //解决跨域问题
@RequestMapping(value = "/api/findAllBuildings",method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
public List<Building> findAllBuildings(){
return buildingService.findAllBuildings();
}
//@PathVariable作用: 将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“) 这里xxx代表bId
//查 根据buildingId查询 测试url:http://localhost:8080/api/findByBuildingId/1
@RequestMapping("/api/findByBuildingId/{bId}")
public Building findByBuildingId(@PathVariable int bId){
Building building = buildingService.findByBuildingId(bId);
return building;
}
//删 根据BuildingId删除 测试url:http://localhost:8080/api/deleteByBuildingId/23
@RequestMapping("/api/deleteByBuildingId")
public boolean deleteByBuildingId(@RequestParam("bId") int bId){
try{
buildingService.deleteByBuildingId(bId);
}catch (Exception e){
e.printStackTrace();
return false;
}
return true;
}
// 增
// 11
// 测试url: http://localhost:8080/api/addBuilding?key1=value1&key2=value2&.......
// 例如 http://localhost:8080/api/addBuilding?buildingId=9&parkId=111&buildingName=111&geojson=111&osmId=111&description=1111
@RequestMapping("/api/addBuilding")
public boolean addBuilding(Building building){
try{
buildingService.addBuilding(building);
}catch (Exception e){
e.printStackTrace();
return false;
}
return true;
}
// 改 根据BuildingId修改
// 测试url:http://localhost:8080/api/updateBuildingById?buildingId=1&parkId=1&buildingName=111&geojson=111&osmId=111&description=测试
@RequestMapping("/api/updateBuildingById")
public boolean updateBuildingById(Building building){
try{
buildingService.updateBuilding(building);
}catch(Exception e){
e.printStackTrace();
return false;
}
return true;
}
启动项目
相应的测试Url方法都在代码的注释中写到,由于是后期整理,所以可能存在错误的地方。所以有什么错误的地方可以指出来。
有什么不懂的地方可以留言
记录一下,同时也希望可以帮助到你,
至此,结束。