在MyBatis中,一些SQL语句例如(select * from 表名;delete from 表名)等等,这些SQL语句比较简单,没有那些复杂的关联关系,但是在不用注解的情况下,要执行这些方法的话就要从DAO层,Mapper映射文件两个方面进行实现,这些步骤在我们MyBatis中可以使用注解进行简化;接下来就介绍我们常用的增删改查标签
@Insert
@Update
@Delete
@Select
上面的这些注解中的每一个代表了执行的真实SQL。它们每一个都使用字符串数组(或单独的字符串)。如果传递的是字符串数组,它们由每个分隔它们的单独空间串联起来。
这几个注解的使用方法都是一样的,把注解声明在DAO层的方法上面
PS(这些注解都是MyBatis提供的,只需要引入MyBatis的依赖)
依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
先创建一个接口,并在接口里面声明一个方法
public interface ITestDao {
//获取所有的用户
@Select(" SELECT * FROM smbms_user")
List<User> getUser();
}
这种情况可以不使用Mapper映射文件,但是需要在MyBatis的核心配置文件中引入相应的接口文件(我的接口在com.yjc.dao包下),这个操作代表扫描该包下的所有文件
<mappers>
<package name="com.yjc.dao"/>
</mappers>
接下来直接测试
public class Test1 {
public static void main(String[] args) {
SqlSession session = SqlSessionUtils.getSession();
ITestDao mapper = session.getMapper(ITestDao.class);
List<User> user = mapper.getUser();
for (User user1: user ) {
System.out.println(user1);
}
}
}
输出结果如下,
查出了所有的用户信息,
注解里面一般写的都是单表的简单查询,需要进行关联查询的时候,还是需要将SQL的写在Mapper映射文件
当然MyBatis也给我们提供了进行关系映射相应的注解
@Results
在列和属性或字段之间的单独结果映 射。属 性 :id,column, property, javaType ,jdbcType ,type Handler, one,many。id 属性是一个布尔值,表 示了应 该被用于比较(和在 XML 映射 中的相 似)的属性。one 属性是单 独 的 联 系, 和 相 似 , 而 many 属 性 是 对 集 合 而 言 的 , 和 相 似。 它们这样命名是为了 避免名称冲突
|//注解方式配置resultMap手动映射
@Results(id = "userMap" ,value = {
@Result(id = true, column = "id", property = "id"),
@Result(column = "userName" ,property = "user")
)
//使用注解可以不用小配置文件 但是
在实际开发必须有小配置
@Select("select * from smbms_ user where userName like concat('%',#{name},'%') and gender=#{gender}" )
public List<SmbmsUser> getUserByNameAndGender(@Param( "name") String name, @Param( ”gender") Integer gender);
@Result注解默认只对他下面的第一个方法才能生效,可以使用@ResultMap来进行手动引入
@ResultMap( "userMap")_ Resul ts的ID值
@Select("select * from smbms_ user")
public List<SmbmsUser> getAllUser();