一、添加啓動依賴
在SpringBoot工程的maven文件裏面添加依賴如下:
<properties>
<java.version>1.8</java.version>
<druid.version>1.1.13</druid.version>
<mybatis.version>2.1.0</mybatis.version>
<druid.version>1.1.21</druid.version>
</properties>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
這個啓動器相關依賴如下
二、配置
1.在啓動類*Application配置@MapperScan註解,告訴Spring Boot掃描哪些包下面的Mapper接口。如下
@SpringBootApplication
@MapperScan(basePackages = "com.soft.fireadmin.platform.*.dao")
public class FireAdminApplication {
public static void main(String[] args) {
SpringApplication.run(FireAdminApplication.class, args);
}
}
mybatis-spring提供的註解@MapperScan會自動掃描指定包下面的Java接口,把這些類裝配到Spring IoC容器中。
或者在每個Mapper接口上標註@Mapper註解,這樣SpringBoot就會自動掃描包下面的Java接口,並且Spring會自動創建對應Mapper接口的實現類,註冊爲Spring Bean。
(2)簡單 配置application.properties 如下
#如果接口方法對應的XML放在resources目錄下 需要告訴Mybatis哪裏掃描Mapper
mybatis.mapper-locations=classpath:mapper/**/*.xml
#定義別名掃描的包 需要與@Alias一起使用
mybatis.type-aliases-package=com.soft.admin
#指定Mybatis配置文件 複雜配置可以單獨寫在 一個xml
mybatis.config-location=classpath:mybatis/mybatis-config.xml
#配置Mybatis插件 和攔截器
mybatis.configuration.interceptors=.....
#級聯加載屬性配置 當開啓時,任何方法的調用都會加載該對象的所有屬性。 否則,每個屬性會按需加載
#在 3.4.1 及之前的版本默認值爲 true
mybatis.configuration.aggressive-lazy-loading=false
#配置默認的執行器。SIMPLE 就是普通的執行器;REUSE 執行器會重用預處理語句(prepared statements);
# BATCH 執行器將重用語句並執行批量更新。
mybatis.executor-type=simple
三、編寫代碼
(1)在controller包下編寫控制器類 EmpController.java
/**
* 員工控制器
*
* @author David Lin
* @version: 1.0
* @date 2019-11-10 22:35
*/
@RestController
@RequestMapping("/emp")
public class EmpController {
@Resource
private EmpService empService;
@RequestMapping("/findall")
public List<Emp> findAllEmpList(HttpServletRequest request) {
return empService.findAllEmpList();
}
}
(2)在service包下編寫業務邏輯處理類 EmpService.java 和EmpServiceImpl.java
/**
* 員工業務接口
*
* @author David Lin
* @version: 1.0
* @date 2019-11-10 22:33
*/
public interface EmpService {
/**
* 查詢所有員工列表
* @return
*/
List<Emp> findAllEmpList();
/**
* 根據員工編號獲取員工信息
* @param empno
* @return
*/
Emp getEmpById(String empno);
}
------------------------------
/**
* 員工業務接口實現
*
* @author David Lin
* @version: 1.0
* @date 2019-11-10 22:32
*/
@Service("empService")
public class EmpServiceImpl implements EmpService {
/**
* 員工數據操作對象
*/
@Resource
private EmpMapper empMapper;
@Override
public List<Emp> findAllEmpList() {
return empMapper.findAllEmpList();
}
@Override
public Emp getEmpById(String empno) {
return empMapper.getEmpById(empno);
}
}
(3)在dao包下編寫 數據訪問接口和 Mapper XML映射文件 EmpMapper.java 和EmpMapper.xml
/**
* 員工數據操作接口
*
* @author David Lin
* @version: 1.0
* @date 2019-11-10 22:12
*/
public interface EmpMapper {
/**
* 查詢所有員工列表
* @return
*/
List<Emp> findAllEmpList();
/**
* 根據員工編號獲取員工信息
* @param empno
* @return
*/
Emp getEmpById(String empno);
}
<?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.soft.fireadmin.platform.emp.dao.EmpMapper">
<resultMap id="BaseResultMap" type="com.soft.fireadmin.platform.emp.model.Emp">
<id column="empno" property="empno" jdbcType="DOUBLE"/>
<result column="ename" property="ename" jdbcType="VARCHAR"/>
<result column="job" property="job" jdbcType="VARCHAR"/>
<result column="mgr" property="mgr" jdbcType="DOUBLE"/>
<result column="hiredate" property="hiredate" jdbcType="DATE"/>
<result column="sal" property="sal" jdbcType="DOUBLE"/>
<result column="comm" property="comm" jdbcType="DOUBLE"/>
<result column="deptno" property="deptno" jdbcType="DOUBLE"/>
</resultMap>
<select id="findAllEmpList" resultMap="BaseResultMap">
select e.* from emp e
</select>
<select id="getEmpById" resultMap="BaseResultMap">
select e.* from emp e where e.empno=#{empno,jdbcType=VARCHAR}
</select>
</mapper>
(4)在model包下 編寫 持久化類 Emp.java
/**
* 僱員實體對象
*
* @author David Lin
* @version: 1.0
* @date 2019-03-17 11:30
*/
@Setter
@Getter
@ToString
public class Emp {
/**
* 員工編號
*/
private int empno;
/**
* 員工姓名
*/
private String ename;
/**
* 工作崗位
*/
private String job;
/**
* 領導者編號
*/
private int mgr ;
/**
* 入職時間
* 自定義輸出格式
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
private Timestamp hiredate;
/**
* 薪水
*/
private double sal;
/**
* 獎金
*/
private double comm;
/**
* 所在部門編號
*/
private int deptno;
}
四、注意點
(1)Mapper XML映射文件如果和Mapper接口放在一起 就會被自動掃描到,但是Maven項目打包時會被略掉,這時候需要再maven配置文件pom.xml增加如下配置,避免打包時java目錄下的Mapper XML映射文件被自動忽略掉。
<resources>
<!--Maven java目錄下的xml資源在項目打包時會被忽略,所以配置如下, 防止mybatis的xml文件被忽略-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
如果Mapper XML映射文件放在resources目錄下 則需要配置掃描mapper xml路徑
(2)如果實體對象的時間類型是java.util.Date類型,保存和查詢需要精確到時分秒的可以在XML裏面的插入、更新方法和結果集 中配置 jdbcType=TIMESTAMP,這樣日期保存時就會精確到時分秒。