15. Spring Boot整合Mybatis-注解形式
参照07-spring创建项目
15.1. 添加依赖跟章节16相同
15.2. 创建Mapper接口
使用注解替换Mapper.xml中的代码
注解的用法:
- @Select 用于查询的,配合@Results解析映射结果中实体属性和字段
- @Results用于映射字段和实体属性之间的关系
- id:定义resultMap
- value,映射的字段集合
- @Result
- id
- column
- property
- javaType
- JdbcType
- @One() //association
- @Many //collection
- @ResultMap(value="resultMap") 引用已经写好的Results
- @Update
- @Insert
- @Delete
- @Param:用于声明在接口方法的 形参上,相当于在OGNL上下文中定义了一个参数的名字
java
package com.neuedu.boot.mapper;
import com.neuedu.boot.entity.Menu;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.type.JdbcType;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface MenuMapper {
@Select(value = "select * from menu ")
List<Map> list();
@Select(value = "select * from menu ")
@Results(
value = {
@Result(column = "menu_id", property = "menuId", javaType = Integer.class, jdbcType = JdbcType.INTEGER),
@Result(column = "url", property = "url", javaType = String.class, jdbcType = JdbcType.VARCHAR),
@Result(column = "active", property = "active", javaType = Integer.class, jdbcType = JdbcType.INTEGER),
@Result(column = "parent_id", property = "parentId", javaType = Integer.class, jdbcType = JdbcType.INTEGER),
@Result(column = "menu_type", property = "menuType", javaType = String.class, jdbcType = JdbcType.VARCHAR),
@Result(column = "createtime", property = "createtime", javaType = Date.class, jdbcType = JdbcType.TIMESTAMP),
}
)
List<Menu> listEntity();
@Insert(
value = "insert into menu(menu_name, url, parent_id, menu_type) values(#{menuName} ,#{url} ,#{parentId},#{menuType})"
)
int save(Menu menu);
@Insert(
value = "insert into menu(menu_name, url, parent_id, menu_type) values(#{menu.menuName} ,#{menu.url} ,#{menu.parentId},#{menu.menuType})"
)
int save2(@Param("menu") Menu menu);
}
在运行类上声明MapperScan注解
@MapperScan("com.neuedu.mapper")
15.3. 单元测试类
java
package com.neuedu.boot.mapper;
import com.neuedu.boot.Application10;
import com.neuedu.boot.entity.Menu;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest(classes = Application10.class)
class MenuMapperTest {
@Autowired
MenuMapper menuMapper;
@Test
void list() {
List list = menuMapper.list();
Iterator<Map> it = list.iterator();
while (it.hasNext()) {
Map obj = it.next();
System.out.println(obj);
}
}
@Test
void listEntity() {
List<Menu> list = menuMapper.listEntity();
for (Menu menu : list) {
System.out.println(menu);
}
}
@Test
void save() {
Menu menu = new Menu();
menu.setMenuName("测试菜单");
menu.setUrl("/grant/role");
menu.setParentId(20);
menu.setMenuType("1");
int count = menuMapper.save(menu);
System.out.println("count:"+count);
}
}