Mybatis 框架篇章五

举报
兰舟千帆 发表于 2022/07/21 18:05:38 2022/07/21
【摘要】 根据id查询详情数据先在接口中定义相关的方法package mapper;import jgdabc.Brand;import java.util.List;public interface BrandMapper {// List<Brand> selectAll(); Brand selectByIdBrand(int id);}然后映射文件里面的sql语句映射的sql语句 ...

根据id查询详情数据

先在接口中定义相关的方法

package mapper;

import jgdabc.Brand;

import java.util.List;


public interface BrandMapper {
//   List<Brand> selectAll();
   Brand selectByIdBrand(int id);

}

然后映射文件里面的sql语句

在这里插入图片描述
映射的sql语句

  select *from tb_brand where id = #{id};

#{}是参数占位符
执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。
还有一种占位符是${},但是可能会引起sql注入的问题,所以使用#{}比较安全

然后主要的测试方法

package jgdabc_;

        import jgdabc.Brand;
        import mapper.BrandMapper;
        import org.apache.ibatis.io.Resources;
        import org.apache.ibatis.session.SqlSession;
        import org.apache.ibatis.session.SqlSessionFactory;
        import org.apache.ibatis.session.SqlSessionFactoryBuilder;

        import java.io.IOException;
        import java.io.InputStream;
        import java.util.List;

        import static jgdabc_.MyBatisTest.testSelectAll;

public class MyBatisTest01 {
    public static void main(String[] args) throws IOException {
        testSelectById();
    }
    public static void testSelectById() throws IOException {
        //接收参数
        int id =1;
        //获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //获取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取Mapper接口代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        Brand brand = brandMapper.selectByIdBrand(id);
        System.out.println(brand);
        //释放资源
        sqlSession.close();

    }
}

在映射文件中有一些需要注意的转义字符。
比如我们要去id小于某个值得数据,那么在xml映射文件中是不允许这样直接输入小于号的。
可以这样输入大写的cd然后根据idea给出的提示打出输出的转义,然后在里面写小于号。
在这里插入图片描述

<select id="selectOnly" resultMap="brandResultMap">
        select  * from tb_brand where id <![CDATA[
        <#{id_1};
        ]]>
    </select>

在写这个id之前最好在接口中写入,然后可以让接口在这里自动生成这个id,然后根据我们的需要做出一些改动即可。然后还是一样的方式,在测试类中引入这个id,我们班可以认为它是方法。
在这里插入图片描述
框架就是这样,你可以认为它很死板,减少一些隐含的操作,但是在你使用它之前,没有基础过渡是绝对不行的。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。