SpringBoot和Mybatis的整合
阿新 • • 發佈:2018-12-14
全註解版
SpringBoot配置檔案
這裡使用yml格式的配置檔案,將application.properties改名為application.yml。
#配置資料來源
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/dianping?useUnicode=true&characterEncoding=utf8
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
SpringBoot會自動載入application.yml相關配置,資料來源就會自動注入到sqlSessionFactory中,sqlSessionFactory會自動注入到Mapper中。
實體類
public class Happiness {
private Long id;
private String city;
private Integer num;
//getters、setters、toString
}
對映類
@Mapper public interface HappinessDao { @Select("SELECT * FROM happiness WHERE city = #{city}") Happiness findHappinessByCity(@Param("city") String city); @Insert("INSERT INTO happiness(city, num) VALUES(#{city}, #{num})") int insertHappiness(@Param("city") String city, @Param("num") Integer num); }
Service類
事務管理只需要在方法上加個註解:@Transactional
@Service public class HappinessService { @Autowired private HappinessDao happinessDao; public Happiness selectService(String city){ return happinessDao.findHappinessByCity(city); } @Transactional public void insertService(){ happinessDao.insertHappiness("西安", 9421); int a = 1 / 0; //模擬故障 happinessDao.insertHappiness("長安", 1294); } }
Controller類
@RestController
@RequestMapping("/demo")
public class HappinessController {
@Autowired
private HappinessService happinessService;
@RequestMapping("/query")
public Happiness testQuery(){
return happinessService.selectService("北京");
}
@RequestMapping("/insert")
public Happiness testInsert(){
happinessService.insertService();
return happinessService.selectService("西安");
}
}
測試
http://localhost:8080/demo/query
http://localhost:8080/demo/insert
註解xml合併版
專案結構
SpringBoot配置檔案
#配置資料來源
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/dianping
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
#指定mybatis對映檔案的地址
mybatis:
mapper-locations: classpath:mapper/*.xml
對映類
@Mapper
public interface HappinessDao {
Happiness findHappinessByCity(String city);
int insertHappiness(HashMap<String, Object> map);
}
對映檔案
<mapper namespace="com.example.demo.dao.HappinessDao">
<select id="findHappinessByCity" parameterType="String" resultType="com.example.demo.domain.Happiness">
SELECT * FROM happiness WHERE city = #{city}
</select>
<insert id="insertHappiness" parameterType="HashMap" useGeneratedKeys="true" keyProperty="id">
INSERT INTO happiness(city, num) VALUES(#{city}, #{num})
</insert>
</mapper>
Service類
事務管理只需要在方法上加個註解:@Transactional
@Service
public class HappinessService {
@Autowired
private HappinessDao happinessDao;
public Happiness selectService(String city){
return happinessDao.findHappinessByCity(city);
}
@Transactional
public void insertService(){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("city", "西安");
map.put("num", 9421);
happinessDao.insertHappiness(map);
int a = 1 / 0; //模擬故障
happinessDao.insertHappiness(map);
}
}
Controller類
@RestController
@RequestMapping("/demo")
public class HappinessController {
@Autowired
private HappinessService happinessService;
@RequestMapping("/query")
public Happiness testQuery(){
return happinessService.selectService("北京");
}
@RequestMapping("/insert")
public Happiness testInsert(){
happinessService.insertService();
return happinessService.selectService("西安");
}
}
測試
http://localhost:8080/demo/query
http://localhost:8080/demo/insert