Spring Boot微服務框架整合之通用mapper外掛(tk.mybatis)
阿新 • • 發佈:2019-02-04
繼我上次的Springboot框架整合,整合了初步的微服務框架,還有mybatis整合實現資料庫查詢資料的demo
現在給大家再整合一個本人覺得比較好用的通用mapper外掛(tk.mybatis),這個外掛裡面封裝好了我們需要用到的很多sql語句,不過這個外掛是通過我們去呼叫它封裝的各種方法來實現sql語句的效果。這樣就不用像mybatis那樣每次寫一個介面就要寫一條sql語句。這樣大大減少了我們的工作量。
我們先搭建好一個配置了mybatis能跑起來的maven專案,不會的點選下面連結去搭建:
1,首先我們新增tk.mybatis的依賴包
<!--通用Mapper--> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.3.9</version> </dependency>
2,然後去新增一個UserInfo實體類
UserInfo.class程式碼:
//註解宣告資料庫某表明
@Table(name = "USER")//如果實體類名字與資料庫不一致又不使用註解會報錯
public class UserInfo {
// 註解宣告該表的欄位名//如果實體類變數與資料庫列名不一致又不使用註解會報錯
@Column(name = "id")
private Integer id;
@Column(name = "code")//如果實體類變數與資料庫列名不一致又不使用註解會報錯
private String code;
//新增get,set
}
3,新建配置掃描類檔案
MyBatisConfig.class:
package com.lkt.Professional.mapper.mybatis; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.context.annotation.Bean; public class MyBatisConfig { @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactoryBean(){ SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); // bean.setDataSource(dataSource()); bean.setTypeAliasesPackage("com.lkt.Professional.entity"); try { //基於註解掃描Mapper,不需配置xml路徑 //bean.setMapperLocations(resolver.getResources("classpath:mappers/*.xml")); return bean.getObject(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); throw new RuntimeException(e); } } }
MyBatisMapperScannerConfig.class:
package com.lkt.Professional.mapper.mybatis;
import java.util.Properties;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.lkt.Professional.MyMappers.MyMapper;
import tk.mybatis.spring.mapper.MapperScannerConfigurer;
@Configuration
//必須在MyBatisConfig註冊後再載入MapperScannerConfigurer,否則會報錯
@AutoConfigureAfter(MyBatisConfig.class)
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
mapperScannerConfigurer.setBasePackage("com.lkt.Professional.mapper.mybatis");
Properties properties = new Properties();
properties.setProperty("mappers", MyMapper.class.getName());//MyMapper這個類接下來會建立
properties.setProperty("notEmpty", "false");
properties.setProperty("IDENTITY", "MYSQL");
//特別注意mapperScannerConfigurer的引入import tk.mybatis.spring.mapper.MapperScannerConfigurer;引入錯誤則沒下面這個方法
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}
}
4,新建父類MyMapper
MyMapper:(把MyMapper檔案存放在mapper資料夾的同級目錄或者上級目錄,如果掃描到了MyMapper會出現報錯)
package com.lkt.Professional.MyMappers;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends Mapper<T> , MySqlMapper<T> {
//FIXME 再次提醒:該介面不能被掃描到
}
5,新建dao層
新建一個UserInfoDao.class:
package com.lkt.Professional.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.lkt.Professional.entity.UserInfo;
import com.lkt.Professional.MyMappers.MyMapper;
@Mapper
public interface UserInfoDao extends MyMapper<UserInfo> {
//不需要寫方法
}
6,新建UserInfoservice和UserInfoserviceImpl
UserInfoservice.class:
public interface UserInfoservice{
List<UserInfo> selectALL() ;
}
UserInfoserviceImpl.class:
@Autowired
UserInfoDao userinfodao;
@Override
public List<UserInfo> selectALL(){
return userinfodao.selectAll();//呼叫父類MyMapper的方法查詢資料
}
7,新建UserInfocontroller
UserInfocontroller.class:
@Autowired
private UserInfoservice userinfoservice;
//新增的介面方法
@RequestMapping("/getall")
@ResponseBody List<UserInfo> getall() {
return userinfoservice.selectALL();
}