根据id查询详情数据

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

  1. package mapper;
  2. import jgdabc.Brand;
  3. import java.util.List;
  4. public interface BrandMapper {
  5. // List<Brand> selectAll();
  6. Brand selectByIdBrand(int id);
  7. }

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

根据id查询详情数据 - 图1
映射的sql语句

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

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

然后主要的测试方法

  1. package jgdabc_;
  2. import jgdabc.Brand;
  3. import mapper.BrandMapper;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.util.List;
  11. import static jgdabc_.MyBatisTest.testSelectAll;
  12. public class MyBatisTest01 {
  13. public static void main(String[] args) throws IOException {
  14. testSelectById();
  15. }
  16. public static void testSelectById() throws IOException {
  17. //接收参数
  18. int id =1;
  19. //获取SqlSessionFactory
  20. String resource = "mybatis-config.xml";
  21. InputStream inputStream = Resources.getResourceAsStream(resource);
  22. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  23. //获取SqlSession
  24. SqlSession sqlSession = sqlSessionFactory.openSession();
  25. //获取Mapper接口代理对象
  26. BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
  27. Brand brand = brandMapper.selectByIdBrand(id);
  28. System.out.println(brand);
  29. //释放资源
  30. sqlSession.close();
  31. }
  32. }

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

  1. <select id="selectOnly" resultMap="brandResultMap">
  2. select * from tb_brand where id <![CDATA[
  3. <#{id_1};
  4. ]]>
  5. </select>

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