MyBatis注解开发以及搭建SQL

MyBatis高级

注解开发

  • 除了用映射配置文件来操作外,我们还可以通过注解的形式来操作
  • 常用注解:
    • @Select(“查询的sql语句”):执行查询数据操作的注解
    • @Insert(“新增的sql语句”):执行新增数据操作的注解
    • @Update(“修改的sql语句”):执行修改数据操作的注解
    • @Delete(“删除的sql语句”):执行删除数据操作的注解
    • @Param:给映射器方法中的每个参数来取一个名字

对比配置文件方式的不同

  • sql编写的位置不同

  • 核心配置文件如何加载mapper的

    • 使用mapper配置文件加载的方式

          <mappers>
              <mapper resource="com/mybatis/one_to_one/OneToOneMapper.xml"/>
              <mapper resource="com/mybatis/one_to_many/OneToManyMapper.xml"/>
              <mapper resource="com/mybatis/many_to_many/ManyToManyMapper.xml"/>
          </mappers>
      
    • 加载接口的方式

          <mappers>
              <package name="com.mybatis.mapper"/>
          </mappers>
      

注解开发注意事项

  • @Results的大括号是写在括号内的

    @Results({})
    
  • @Result中的属性是不区分先后顺序的

  • Result里面可以使用的column字段是查询结果集中的字段

  • @One中的select中指定的方法如果有参数那么参数的来源是查询的结果的字段

        //查询全部省份证
        @Select("SELECT * FROM card")
        @Results({
                @Result(column = "id",property = "id"),
                @Result(column = "number",property = "number"),
                @Result(
                        javaType = Person.class,    // 被包含对象的实际数据类型
                        property = "p",             // 被包含对象的变量名
                        column = "pid",             // 根据查询出的card表中的pid字段来查询person表
                        /*
                            one、@One 一对一固定写法
                            select属性:指定调用哪个接口中的哪个方法
                         */
                        one = @One(select = "com.mybatis.one_to_one.PersonMapper.selectById")
                )
        })
        public abstract List<Card> selectAll();
    

搭建sql语句

  • 我们之前通过注解开发时,相关sql语句都是直接拼写的。一些关键字写起来比较麻烦,并且容易出错

  • MyBatis给我们提供了org.apache.ibatis.jdbc.SQL功能类,专门用于构建sql语句

    方法名说明
    SELECT(String …column)根据字段拼接查询语句
    FROM(String…table)根据表名拼接语句
    WHERE(String…condition)根据条件拼接语句
    INSERT_INTO(String table)根据表名拼接新增语句
    VALUES(String column,String values)根据字段和值拼接插入数据语句
    UPDATE(String table)根据表名拼接修改语句
    DELETE_FROM(String table)根据表名拼接删除语句
    … …… …
    import org.apache.ibatis.jdbc.SQL;
    
    public class SqlTest {
        public static void main(String[] args) {
            String sql = getSql();
            System.out.println(sql);
        }
    
        //定义方法,获取查询student表的sql语句
        /*public static String getSql() {
            String sql = "SELECT * FROM student";
            return sql;
        }*/
    
        public static String getSql() {
            String sql = new SQL(){
                {
                    SELECT("*");
                    FROM("student");
                }
            }.toString();
    
            return sql;
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值