MyBatis3构建在全面而且强大的Java 注解(Java annotation)之上。MyBatis注解提供了一种便捷的方式来实现简单映射语句,而不会引入大量的xml配置开销。
在没有注解之前,xml被广泛的应用于描述元数据,xml的维护越来越糟糕。在需要紧耦合的地方,比xml更容易维护,阅读更方便。在需要比较多参数设置时,使用xml更方便,而在将某个方法声明为服务时这种紧耦合的情况下,比较适合注解。
一、常用注解:
1、SQL语句映射
@Insert:实现新增功能
@Select注解:实现查询功能
@SelectKey注解:插入后,获取id的值
@Insert注解:实现插入功能
@Update注解:实现更新功能
@Delete注解:实现删除功能
2、结果集映射
@Result,@Results,@ResultMap是结果集映射的三大注解。
3、关系映射
@one注解:用于一对一关系映射
@many注解:用于一对多关系映射
二、使用注解步骤:
1、接口中添加注解
public interface UserMapper {
@Select("select * from user")
List<User> getUserAll();
}
2、mybatis核心配置文件中注入
<!--绑定接口-->
<mappers>
<mapper class="com.jason.dao.UserMapper"/>
</mappers>
3、测试
public class UserMapperTest {
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUserAll();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
}
三、mybatis详细执行流程
四、@param注解
1、@param注解:
注解就是用来简化xml配置的时候使用的,@param注解的作用是给参数命名的,参数命名后能根据名字得到参数值,正确的将参数传入SQL语句中。
2、使用原则:
-
在方法中只接收一个参数的情况下,可以不使用@param注解
-
在方法接受多个参数的情况下,一定要使用@param注解给参数命名
-
如果参数是JavaBeans则不能使用
3、@param的使用
-
编写接口方法注解
public interface UserMapper {
@Select("select * from user where id = #{id}")
User selectUserById(@Param("id") int id);
}
-
测试
@Test
public void selectUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user);
sqlSession.close();
}
五、Lombok
1、Lombok项目
是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
2、常用注解:
@Setter :注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
@Getter :使用方法同上,区别在于生成的是getter方法。
@ToString :注解在类,添加toString方法。
@EqualsAndHashCode: 注解在类,生成hashCode和equals方法。
@NoArgsConstructor: 注解在类,生成无参的构造方法。
@RequiredArgsConstructor: 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
@AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法。
@Data: 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@Slf4j: 注解在类,生成log变量,严格意义来说是常量。
3、使用步骤:
(1)IDEA装lombok插件
(2)引入相关依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
(3)在代码中添加注解
//GET,SET,ToString,有参,无参构造
@Data
public class User {
private int id;
private String name;
private String pwd;
}