SpringBoot09:整合MyBatis
SpringBoot09:整合MyBatis
官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.1

整合测试
1、导入 MyBatis 所需要的依赖
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency>
2、配置数据库连接信息(不变)
spring:datasource:username: rootpassword: 123456#?serverTimezone=UTC解决时区的报错url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8type: com.alibaba.druid.pool.DruidDataSource#Spring Boot 默认是不注入这些属性值的,需要自己绑定#druid 数据源专有配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4jfilters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
3、测试数据库是否连接成功!
4、创建实体类,导入 Lombok!
Department.java
package com.kuang.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;public class Department {private Integer id;private String departmentName;}
5、创建mapper目录以及对应的 Mapper 接口
DepartmentMapper.java
//@Mapper : 表示本类是一个 MyBatis 的 Mapperpublic interface DepartmentMapper {// 获取所有部门信息List<Department> getDepartments();// 通过id获得部门Department getDepartment(Integer id);}
6、对应的Mapper映射文件
DepartmentMapper.xml
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.kuang.mapper.DepartmentMapper"><select id="getDepartments" resultType="Department">select * from department;</select><select id="getDepartment" resultType="Department" parameterType="int">select * from department where id = #{id};</select></mapper>
7、maven配置资源过滤问题
<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources>
8、编写部门的 DepartmentController 进行测试!
public class DepartmentController {DepartmentMapper departmentMapper;// 查询全部部门public List<Department> getDepartments(){return departmentMapper.getDepartments();}// 查询全部部门public Department getDepartment(return departmentMapper.getDepartment(id);}}
启动项目访问进行测试!
我们增加一个员工类再测试下,为之后做准备
1、新建一个pojo类 Employee ;
public class Employee {private Integer id;private String lastName;private String email;//1 male, 0 femaleprivate Integer gender;private Integer department;private Date birth;private Department eDepartment; // 冗余设计}
2、新建一个 EmployeeMapper 接口
//@Mapper : 表示本类是一个 MyBatis 的 Mapperpublic interface EmployeeMapper {// 获取所有员工信息List<Employee> getEmployees();// 新增一个员工int save(Employee employee);// 通过id获得员工信息Employee get(Integer id);// 通过id删除员工int delete(Integer id);}
3、编写 EmployeeMapper.xml 配置文件
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.kuang.mapper.EmployeeMapper"><resultMap id="EmployeeMap" type="Employee"><id property="id" column="eid"/><result property="lastName" column="last_name"/><result property="email" column="email"/><result property="gender" column="gender"/><result property="birth" column="birth"/><association property="eDepartment" javaType="Department"><id property="id" column="did"/><result property="departmentName" column="dname"/></association></resultMap><select id="getEmployees" resultMap="EmployeeMap">select e.id as eid,last_name,email,gender,birth,d.id as did,d.department_name as dnamefrom department d,employee ewhere d.id = e.department</select><insert id="save" parameterType="Employee">insert into employee (last_name,email,gender,department,birth)values (#{lastName},#{email},#{gender},#{department},#{birth});</insert><select id="get" resultType="Employee">select * from employee where id = #{id}</select><delete id="delete" parameterType="int">delete from employee where id = #{id}</delete></mapper>
4、编写EmployeeController类进行测试
public class EmployeeController {EmployeeMapper employeeMapper;// 获取所有员工信息public List<Employee> getEmployees(){return employeeMapper.getEmployees();}public int save(){Employee employee = new Employee();employee.setLastName("kuangshen");employee.setEmail("qinjiang@qq.com");employee.setGender(1);employee.setDepartment(101);employee.setBirth(new Date());return employeeMapper.save(employee);}// 通过id获得员工信息public Employee get(return employeeMapper.get(id);}// 通过id删除员工public int delete(return employeeMapper.delete(id);}}
测试结果完成,搞定收工!
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号