新增接口:
1. 获取所有设备的最新一条数据
新增数据库表:
1. 车辆信息表
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.domain.entity; |
| | | |
| | | import javax.persistence.*; |
| | | |
| | | @Table(name = "obd_vehicle_info") |
| | | public class VehicleInfo { |
| | | @Id |
| | | private Integer id; |
| | | |
| | | @Column(name = "obd_device_code") |
| | | private String obdDeviceCode; |
| | | |
| | | @Column(name = "obd_vin") |
| | | private String obdVin; |
| | | |
| | | @Column(name = "obd_licence_plate") |
| | | private String obdLicencePlate; |
| | | |
| | | /** |
| | | * 0: éå¡ï¼ 1ï¼æ¸£å车 |
| | | */ |
| | | @Column(name = "obd_vehicle_type") |
| | | private Integer obdVehicleType; |
| | | |
| | | /** |
| | | * @return id |
| | | */ |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | /** |
| | | * @param id |
| | | */ |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | /** |
| | | * @return obd_device_code |
| | | */ |
| | | public String getObdDeviceCode() { |
| | | return obdDeviceCode; |
| | | } |
| | | |
| | | /** |
| | | * @param obdDeviceCode |
| | | */ |
| | | public void setObdDeviceCode(String obdDeviceCode) { |
| | | this.obdDeviceCode = obdDeviceCode == null ? null : obdDeviceCode.trim(); |
| | | } |
| | | |
| | | /** |
| | | * @return obd_vin |
| | | */ |
| | | public String getObdVin() { |
| | | return obdVin; |
| | | } |
| | | |
| | | /** |
| | | * @param obdVin |
| | | */ |
| | | public void setObdVin(String obdVin) { |
| | | this.obdVin = obdVin == null ? null : obdVin.trim(); |
| | | } |
| | | |
| | | /** |
| | | * @return obd_licence_plate |
| | | */ |
| | | public String getObdLicencePlate() { |
| | | return obdLicencePlate; |
| | | } |
| | | |
| | | /** |
| | | * @param obdLicencePlate |
| | | */ |
| | | public void setObdLicencePlate(String obdLicencePlate) { |
| | | this.obdLicencePlate = obdLicencePlate == null ? null : obdLicencePlate.trim(); |
| | | } |
| | | |
| | | /** |
| | | * è·å1: éå¡ï¼ 2ï¼æ¸£å车 |
| | | * |
| | | * @return obd_vehicle_type - 1: éå¡ï¼ 2ï¼æ¸£å车 |
| | | */ |
| | | public Integer getObdVehicleType() { |
| | | return obdVehicleType; |
| | | } |
| | | |
| | | /** |
| | | * 设置1: éå¡ï¼ 2ï¼æ¸£å车 |
| | | * |
| | | * @param obdVehicleType 1: éå¡ï¼ 2ï¼æ¸£å车 |
| | | */ |
| | | public void setObdVehicleType(Integer obdVehicleType) { |
| | | this.obdVehicleType = obdVehicleType; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.domain.mapper |
| | | |
| | | import com.flightfeather.obd.domain.MyMapper |
| | | import com.flightfeather.obd.domain.entity.VehicleInfo |
| | | import org.apache.ibatis.annotations.Mapper |
| | | |
| | | @Mapper |
| | | interface VehicleInfoMapper : MyMapper<VehicleInfo> |
| | |
| | | */ |
| | | class LatLngVo : BaseJson() { |
| | | var deviceCode: String? = null |
| | | var obdDataTime: Date?= null |
| | | var vin: String? = null |
| | | var license: String? = null |
| | | var obdDataTime: Date? = null |
| | | //车è¾ç±»å |
| | | var carType: Int? = null |
| | | //车è¾ç¶æ |
| | | var status: Int = 0 |
| | | var lat: Double? = null |
| | | var lng: Double? = null |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.lightshare.bean |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/10/25 |
| | | */ |
| | | class VehicleInfoVo : BaseJson() { |
| | | var id: Int? = null |
| | | |
| | | var obdDeviceCode: String? = null |
| | | |
| | | var obdVin: String? = null |
| | | |
| | | var obdLicencePlate: String? = null |
| | | |
| | | /** |
| | | * 0: éå¡ï¼ 1ï¼æ¸£å车 |
| | | */ |
| | | var obdVehicleType: Int? = null |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.lightshare.eunm |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/9/26 |
| | | * 车è¾ç¶æ |
| | | * 0ï¼ç¦»çº¿ |
| | | * 1ï¼å¨çº¿ |
| | | * 2ï¼è¦æ¥ |
| | | * 3ï¼è¶
æ |
| | | */ |
| | | enum class CarStatus(val value: Int) { |
| | | OffLine(0), |
| | | OnLine(1), |
| | | Warn(2), |
| | | Exceed(3) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.lightshare.eunm |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/9/26 |
| | | */ |
| | | enum class CarType(val value: Int){ |
| | | //éè£
ç®±å¡è½¦ |
| | | ContainerTruck(0), |
| | | //渣å车 |
| | | SlagCar(1) |
| | | } |
| | |
| | | fun getCoordinate(deviceCode: String): LatLngVo |
| | | |
| | | /** |
| | | * æ ¹æ®ç»ç«¯è®¾å¤ç åæ¶é´æ®µï¼ç»åºæ¤æ®µæ¶é´å
|
| | | * è·åææ°ç车è¾åæ ä¿¡æ¯ |
| | | */ |
| | | fun getLatestCoordinate(pageNum: Int?, pageSize: Int?): List<LatLngVo> |
| | | |
| | | /** |
| | | * æ ¹æ®ç»ç«¯è®¾å¤ç åæ¶é´æ®µï¼ç»åºæ¤æ®µæ¶é´å
çåæ |
| | | */ |
| | | //TODO |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.lightshare.service |
| | | |
| | | import com.flightfeather.obd.lightshare.bean.VehicleInfoVo |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/10/25 |
| | | * 车è¾ç¸å
³ä¿¡æ¯æ¥å£ |
| | | */ |
| | | interface VehicleService { |
| | | |
| | | /** |
| | | * è·å车è¾ä¿¡æ¯ |
| | | */ |
| | | fun getVehicleInfo(pageNum: Int?, pageSize: Int?): List<VehicleInfoVo> |
| | | |
| | | } |
| | |
| | | package com.flightfeather.obd.lightshare.service.impl |
| | | |
| | | import com.flightfeather.obd.lightshare.bean.* |
| | | import com.flightfeather.obd.lightshare.eunm.CarStatus |
| | | import com.flightfeather.obd.lightshare.service.ObdDataService |
| | | import com.flightfeather.obd.repository.* |
| | | import org.springframework.beans.BeanUtils |
| | | import org.springframework.stereotype.Service |
| | | import java.time.LocalDateTime |
| | | import java.time.ZoneId |
| | | import java.util.* |
| | | |
| | | /** |
| | | * @author riku |
| | |
| | | val carLoginRepository: CarLoginRepository, |
| | | val carLogoutRepository: CarLogoutRepository, |
| | | val obdInfoRepository: ObdInfoRepository, |
| | | val dataStreamRepository: DataStreamRepository |
| | | val dataStreamRepository: DataStreamRepository, |
| | | val vehicleRepository: VehicleRepository |
| | | ) : ObdDataService { |
| | | |
| | | override fun getDataByVinCode(vinCode: String, pageNum: Int?, pageSize: Int?): MutableList<ObdDataVo> |
| | |
| | | override fun getLogoutData(deviceCode: String, pageNum: Int?, pageSize: Int?, startTime: String?, endTime: String?): List<CarLogoutVo> |
| | | = carLogoutRepository.getLogoutData(deviceCode, pageNum, pageSize, startTime, endTime) |
| | | |
| | | override fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<ObdInfoVo> |
| | | = obdInfoRepository.getObdInfo(deviceCode, pageNum, pageSize) |
| | | override fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<ObdInfoVo>{ |
| | | val resultList = mutableListOf<ObdInfoVo>() |
| | | obdInfoRepository.getObdInfo(deviceCode, pageNum, pageSize).forEach { |
| | | val vo = ObdInfoVo() |
| | | BeanUtils.copyProperties(it, vo) |
| | | resultList.add(vo) |
| | | } |
| | | return resultList |
| | | } |
| | | |
| | | override fun getDataStream(deviceCode: String, pageNum: Int?, pageSize: Int?, startTime: String?, endTime: String?): List<DataStreamVo> |
| | | = dataStreamRepository.getDataStream(deviceCode, pageNum, pageSize, startTime, endTime) |
| | |
| | | |
| | | override fun getCoordinate(deviceCode: String): LatLngVo |
| | | = dataStreamRepository.getCoordinate(deviceCode) |
| | | |
| | | override fun getLatestCoordinate(pageNum: Int?, pageSize: Int?): List<LatLngVo> { |
| | | val resultList = mutableListOf<LatLngVo>() |
| | | |
| | | val now = LocalDateTime.now() |
| | | |
| | | vehicleRepository.getVehicleInfo(pageNum, pageSize).forEach { vehicleInfo -> |
| | | val dataStream = dataStreamRepository.getLatestDataStream(vehicleInfo.obdDeviceCode) |
| | | val obdInfo = obdInfoRepository.getObdInfo(vehicleInfo.obdDeviceCode, 1, 1).takeIf { it.isNotEmpty() }?.get(0) |
| | | |
| | | //è·åæ°æ®éæ ·æ¶é´ï¼å¦æä¸ºç©ºï¼ååå½åæ¶é´çå24å°æ¶ |
| | | val dataTime = dataStream?.obdDataTime?.toInstant()?.atZone(ZoneId.systemDefault())?.toLocalDateTime() |
| | | ?: LocalDateTime.now().minusDays(1) |
| | | |
| | | resultList.add(LatLngVo().apply { |
| | | deviceCode = vehicleInfo.obdDeviceCode |
| | | vin = obdInfo?.obdVin |
| | | license = vehicleInfo.obdLicencePlate |
| | | obdDataTime = dataStream?.obdDataTime |
| | | carType = vehicleInfo.obdVehicleType |
| | | //éæ ·æ¶é´åå½åæ¶é´ç¸å·®è¶
è¿10åé认为设å¤å¤äºç¦»çº¿ç¶æ |
| | | //todo 2019.10.25 å
¶ä½ä¸¤ç§è½¦è¾ç¶æï¼åç»éå¤ç |
| | | status = if (now.minusMinutes(10).isAfter(dataTime)) { |
| | | CarStatus.OffLine.value |
| | | } else { |
| | | CarStatus.OnLine.value |
| | | } |
| | | lat = dataStream?.obdLat |
| | | lng = dataStream?.obdLong |
| | | }) |
| | | } |
| | | |
| | | return resultList |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.lightshare.service.impl |
| | | |
| | | import com.flightfeather.obd.lightshare.bean.VehicleInfoVo |
| | | import com.flightfeather.obd.lightshare.service.VehicleService |
| | | import com.flightfeather.obd.repository.VehicleRepository |
| | | import org.springframework.beans.BeanUtils |
| | | import org.springframework.stereotype.Service |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/10/25 |
| | | */ |
| | | @Service |
| | | class VehicleServiceImpl(val vehicleRepository: VehicleRepository) : VehicleService { |
| | | override fun getVehicleInfo(pageNum: Int?, pageSize: Int?): List<VehicleInfoVo> { |
| | | val dbResult = vehicleRepository.getVehicleInfo(pageNum, pageSize) |
| | | |
| | | val resultList = mutableListOf<VehicleInfoVo>() |
| | | |
| | | dbResult.forEach { |
| | | val vo = VehicleInfoVo() |
| | | BeanUtils.copyProperties(it, vo) |
| | | resultList.add(vo) |
| | | } |
| | | |
| | | return resultList |
| | | } |
| | | } |
| | |
| | | fun getCoordinate( |
| | | @PathVariable("deviceCode") deviceCode: String |
| | | ) = obdDataService.getCoordinate(deviceCode) |
| | | |
| | | @GetMapping("/coordinate/latest") |
| | | fun getCoordinate( |
| | | @RequestParam("page", required = false) pageNum: Int?, |
| | | @RequestParam("per_page", required = false) pageSize: Int? |
| | | ) = obdDataService.getLatestCoordinate(pageNum, pageSize) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.lightshare.web |
| | | |
| | | import com.flightfeather.obd.lightshare.service.VehicleService |
| | | import org.springframework.web.bind.annotation.GetMapping |
| | | import org.springframework.web.bind.annotation.RequestMapping |
| | | import org.springframework.web.bind.annotation.RequestParam |
| | | import org.springframework.web.bind.annotation.RestController |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/10/25 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("obd/vehicle") |
| | | class VehicleInfoController(val vehicleService: VehicleService) { |
| | | |
| | | @GetMapping("/info") |
| | | fun getVehicleInfo( |
| | | @RequestParam("page", required = false) pageNum: Int?, |
| | | @RequestParam("per_page", required = false) pageSize: Int? |
| | | ) = vehicleService.getVehicleInfo(pageNum, pageSize) |
| | | } |
| | |
| | | package com.flightfeather.obd.repository |
| | | |
| | | import com.flightfeather.obd.domain.entity.DataStream |
| | | import com.flightfeather.obd.lightshare.bean.DataStreamVo |
| | | import com.flightfeather.obd.lightshare.bean.LatLngVo |
| | | import com.flightfeather.obd.socket.bean.ObdPackageData |
| | |
| | | * æ ¹æ®ç»ç«¯è®¾å¤ç è·åææ°ç»çº¬åº¦ |
| | | */ |
| | | fun getCoordinate(deviceCode: String): LatLngVo |
| | | |
| | | /** |
| | | * è·åä¸è¾è½¦ææ°ç䏿¡ç¶æä¿¡æ¯ |
| | | */ |
| | | fun getLatestDataStream(deviceCode: String): DataStream? |
| | | } |
| | |
| | | /** |
| | | * æ ¹æ®ç»ç«¯è®¾å¤ç è·åobdæ°æ® |
| | | */ |
| | | fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<ObdInfoVo> |
| | | fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<com.flightfeather.obd.domain.entity.ObdInfo> |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.repository |
| | | |
| | | import com.flightfeather.obd.domain.entity.VehicleInfo |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/10/25 |
| | | */ |
| | | interface VehicleRepository { |
| | | |
| | | /** |
| | | * è·å车è¾ä¿¡æ¯ |
| | | */ |
| | | fun getVehicleInfo(pageNum: Int?, pageSize: Int?): List<VehicleInfo> |
| | | } |
| | |
| | | |
| | | import com.flightfeather.obd.domain.entity.DataStream |
| | | import com.flightfeather.obd.domain.mapper.DataStreamMapper |
| | | import com.flightfeather.obd.domain.mapper.VehicleInfoMapper |
| | | import com.flightfeather.obd.lightshare.bean.DataStreamVo |
| | | import com.flightfeather.obd.lightshare.bean.LatLngVo |
| | | import com.flightfeather.obd.repository.DataStreamRepository |
| | |
| | | * Date: 2019/9/17 |
| | | */ |
| | | @Repository |
| | | class DataStreamDaoImpl(val dataStreamMapper: DataStreamMapper): DataStreamRepository { |
| | | class DataStreamDaoImpl(val dataStreamMapper: DataStreamMapper, val vehicleInfoMapper: VehicleInfoMapper): DataStreamRepository { |
| | | |
| | | override fun saveDataStream(packageData: ObdPackageData): Boolean { |
| | | |
| | |
| | | val example = Example(DataStream::class.java).apply { |
| | | createCriteria().andEqualTo("obdDeviceCode", deviceCode).run { |
| | | startTime?.let { |
| | | val st = sf.parse(startTime) |
| | | andGreaterThanOrEqualTo("obdDataTime", st) |
| | | try { |
| | | val st = sf.parse(startTime) |
| | | andGreaterThanOrEqualTo("obdDataTime", st) |
| | | } catch (e: Throwable) { |
| | | e.printStackTrace() |
| | | } |
| | | } |
| | | endTime?.let { |
| | | val et = sf.parse(endTime) |
| | | andLessThanOrEqualTo("obdDataTime", et) |
| | | try { |
| | | val et = sf.parse(endTime) |
| | | andLessThanOrEqualTo("obdDataTime", et) |
| | | } catch (e: Throwable) { |
| | | e.printStackTrace() |
| | | } |
| | | } |
| | | orderBy("obdDataTime").desc() |
| | | } |
| | |
| | | val example = Example(DataStream::class.java).apply { |
| | | createCriteria().andEqualTo("obdDeviceCode", deviceCode).run { |
| | | startTime?.let { |
| | | val st = sf.parse(startTime) |
| | | andGreaterThanOrEqualTo("obdDataTime", st) |
| | | try { |
| | | val st = sf.parse(startTime) |
| | | andGreaterThanOrEqualTo("obdDataTime", st) |
| | | } catch (e: Throwable) { |
| | | e.printStackTrace() |
| | | } |
| | | } |
| | | endTime?.let { |
| | | val et = sf.parse(endTime) |
| | | andLessThanOrEqualTo("obdDataTime", et) |
| | | try { |
| | | val et = sf.parse(endTime) |
| | | andLessThanOrEqualTo("obdDataTime", et) |
| | | } catch (e: Throwable) { |
| | | e.printStackTrace() |
| | | } |
| | | } |
| | | orderBy("obdDataTime").desc() |
| | | } |
| | |
| | | |
| | | return latLngVo |
| | | } |
| | | |
| | | override fun getLatestDataStream(deviceCode: String): DataStream? { |
| | | val example = Example(DataStream::class.java).apply { |
| | | createCriteria().andEqualTo("obdDeviceCode", deviceCode) |
| | | orderBy("obdDataTime").desc() |
| | | } |
| | | //è·åææ°çä¸ä¸ª |
| | | PageHelper.offsetPage<DataStream>(0, 1) |
| | | return dataStreamMapper.selectByExample(example).takeIf { it.isNotEmpty() }?.get(0) |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | override fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<ObdInfoVo> { |
| | | override fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<ObdInfo> { |
| | | val example = Example(ObdInfo::class.java).apply { |
| | | createCriteria().andEqualTo("obdDeviceCode", deviceCode).run { |
| | | orderBy("obdDataTime").desc() |
| | |
| | | //å页 |
| | | val offset = (pageSize?.times(pageNum?.minus(1) ?: 0)) ?: 0 |
| | | PageHelper.offsetPage<ObdInfo>(offset, pageSize ?: 10) |
| | | val result = obdInfoMapper.selectByExample(example) |
| | | |
| | | val resultList = mutableListOf<ObdInfoVo>() |
| | | result.forEach { |
| | | val vo = ObdInfoVo() |
| | | BeanUtils.copyProperties(it, vo) |
| | | resultList.add(vo) |
| | | } |
| | | |
| | | return resultList |
| | | return obdInfoMapper.selectByExample(example) |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.flightfeather.obd.repository.impl |
| | | |
| | | import com.flightfeather.obd.domain.entity.DataStream |
| | | import com.flightfeather.obd.domain.entity.VehicleInfo |
| | | import com.flightfeather.obd.domain.mapper.VehicleInfoMapper |
| | | import com.flightfeather.obd.repository.VehicleRepository |
| | | import com.github.pagehelper.PageHelper |
| | | import org.springframework.stereotype.Repository |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/10/25 |
| | | */ |
| | | @Repository |
| | | class VehicleRepositoryImpl(val vehicleInfoMapper: VehicleInfoMapper):VehicleRepository { |
| | | override fun getVehicleInfo(pageNum: Int?, pageSize: Int?): List<VehicleInfo> { |
| | | |
| | | //å页 |
| | | val offset = (pageSize?.times(pageNum?.minus(1) ?: 0)) ?: 0 |
| | | PageHelper.offsetPage<DataStream>(offset, pageSize ?: 10) |
| | | |
| | | return vehicleInfoMapper.selectAll() |
| | | } |
| | | } |
| | |
| | | <!--<table tableName="obd_origin_data" domainObjectName="OriginData" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>--> |
| | | <!--<table tableName="obd_car_login" domainObjectName="CarLogin" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>--> |
| | | <!--<table tableName="obd_car_logout" domainObjectName="CarLogout" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>--> |
| | | <table tableName="obd_data_stream" domainObjectName="DataStream" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> |
| | | <!--<table tableName="obd_data_stream" domainObjectName="DataStream" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>--> |
| | | <!--<table tableName="obd_info" domainObjectName="ObdInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>--> |
| | | <table tableName="obd_vehicle_info" domainObjectName="VehicleInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> |
| | | </context> |
| | | </generatorConfiguration> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.flightfeather.obd.domain.mapper.VehicleInfoMapper"> |
| | | <resultMap id="BaseResultMap" type="com.flightfeather.obd.domain.entity.VehicleInfo"> |
| | | <!-- |
| | | WARNING - @mbg.generated |
| | | --> |
| | | <id column="id" jdbcType="INTEGER" property="id" /> |
| | | <result column="obd_device_code" jdbcType="VARCHAR" property="obdDeviceCode" /> |
| | | <result column="obd_vin" jdbcType="VARCHAR" property="obdVin" /> |
| | | <result column="obd_licence_plate" jdbcType="VARCHAR" property="obdLicencePlate" /> |
| | | <result column="obd_vehicle_type" jdbcType="INTEGER" property="obdVehicleType" /> |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!-- |
| | | WARNING - @mbg.generated |
| | | --> |
| | | id, obd_device_code, obd_vin, obd_licence_plate, obd_vehicle_type |
| | | </sql> |
| | | </mapper> |