上一篇是通過Jdbc訪問數(shù)據(jù)庫,本篇來寫通過MyBatis數(shù)據(jù)訪問。
首先在pom.xml中加入MyBatis依賴。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
可以不添加spring-boot-starter-jdbc。因?yàn)?,mybatis-spring-boot-starter依賴中存在spring-boot-starter-jdbc。
mysql的依賴還是要在的,不然怎么連接數(shù)據(jù)庫呢。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.14</version>
</dependency>
修改resource下的application.properties
## 數(shù)據(jù)源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
## Mybatis 配置
mybatis.typeAliasesPackage=org.spring.springboot.domain
mybatis.mapperLocations=classpath:mapper/*.xml
結(jié)構(gòu)圖
image
在MySQL中創(chuàng)建City表,并在src/domain/下創(chuàng)建City實(shí)體類
public class City {
private Long id;
private Long provinceId;
private String cityName;
private String description;
// 省略getter和setter
}
在resource中創(chuàng)建mapper文件夾,在mapper文件夾下創(chuàng)建CityMapper.xml
<?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="org.spring.springboot.dao.CityDao">
<resultMap id="BaseResultMap" type="org.spring.springboot.domain.City">
<result column="id" property="id" />
<result column="province_id" property="provinceId" />
<result column="city_name" property="cityName" />
<result column="description" property="description" />
</resultMap>
<parameterMap id="City" type="org.spring.springboot.domain.City"/>
<sql id="Base_Column_List">
id, province_id, city_name, description
</sql>
<select id="findByName" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List" />
from city
where city_name = #{cityName}
</select>
</mapper>
Controller層
@RestController
public class CityRestController {
@Autowired
private CityService cityService;
@RequestMapping(value = "/api/city", method = RequestMethod.GET)
public City findOneCity(@RequestParam(value = "cityName", required = true) String cityName) {
return cityService.findCityByName(cityName);
}
}
Service層
/**
* 城市業(yè)務(wù)邏輯接口類
*/
public interface CityService {
/**
* 根據(jù)城市名稱,查詢城市信息
* @param cityName
*/
City findCityByName(String cityName);
}
/**
* 城市業(yè)務(wù)邏輯實(shí)現(xiàn)類
*/
@Service
public class CityServiceImpl implements CityService {
@Autowired
private CityDao cityDao;
@Override
public City findCityByName(String cityName) {
return cityDao.findByName(cityName);
}
}
Dao層
/**
* 城市 DAO 接口類
*/
@Component
public interface CityDao {
/**
* 根據(jù)城市名稱,查詢城市信息
*
* @param cityName 城市名
*/
City findByName(@Param("cityName") String cityName);
}
全部搞定后,運(yùn)行項(xiàng)目,并在postman中測(cè)試接口即可。