• MyBatis中的常用注解


    在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 映射 中的<id>相 似)的属性。one 属性是单 独 的 联 系, 和 <association> 相 似 , 而 many 属 性 是 对 集 合 而 言 的 , 和 <collection>相 似。 它们这样命名是为了 避免名称冲突

    |//注解方式配置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();
  • 相关阅读:
    HDU5643-King's Game
    KM算法详解+模板
    二分图最大匹配(匈牙利算法)
    二分图判断(交叉染色)
    能被2、3、4、5、6、7、8、9 等数整除的数的特征
    Codeforces Round #306 (Div. 2) ABCDE(构造)
    HDU5627--Clarke and MST (bfs+位运算)
    Educational Codeforces Round 82 (Rated for Div. 2)
    2020 CCPC Wannafly Winter Camp Day5
    Codeforces Round #618 (Div. 2)
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/11725925.html
Copyright © 2020-2023  润新知