查看详情

根据ID修改用户信息java javaweb根据id查询信息_学习


1、编写接口方法

BrandMapper接口

根据ID修改用户信息java javaweb根据id查询信息_java_02

这里需要注意的是Brand selectById(int id);这里的id并没有与BrandMapper.xml的select方法里的id相对应,select id="selectById"的含义是这段select对应的是BrandMapper接口里的selectById方法,而这里的#{id}则不同。这也是后面多条件查询需要关注的问题。

根据ID修改用户信息java javaweb根据id查询信息_开发语言_03

2、编写sql映射 BrandMapper.xml

根据ID修改用户信息java javaweb根据id查询信息_学习_04

参数占位符:

1、# {}:会将其替换为?,为了放在sql注入

2、$ {}:拼入sql,会参在sql注入的问题

传参的时候一定要选择#

表名或列名不固定的情况下才使用$

参数类型:parameterType:可以省略,因为在brandmapper接口里面的抽象方法就已经定义的参数类型了

特殊字符处理:

有时候我们要选择的是id小于或者大于多少的,但是在xml的语法中<是开始、>是结束,所以直接这样使用会报错

根据ID修改用户信息java javaweb根据id查询信息_开发语言_05

解决方案:

1、转义字符

根据ID修改用户信息java javaweb根据id查询信息_学习_06

2、CDATA区

根据ID修改用户信息java javaweb根据id查询信息_java_07

tip:输入CD自动补齐CDATA区

条件查询

多条件查询

根据ID修改用户信息java javaweb根据id查询信息_mysql_08

①散装参数:如果方法中有多个参数,需要使用@Param(“SQL参数占位符名称”)

1、编写接口方法

//    多条件查询
//散装参数
    List<Brand> selectByCondition(@Param("status") int status,@Param("companyName") String companyName,@Param("brandName") String brandName);

2、编写BrandMapper.xml

根据ID修改用户信息java javaweb根据id查询信息_开发语言_09


3、执行test

@Test
    public void testSelectByCondition() throws IOException {
//        接收参数
        int status = 1;
        String companyName = "华为";
        String brandName = "华为";
//        为模糊匹配like处理参数
        companyName = "%" + companyName + "%";
        brandName = "%" + brandName + "%";
        //1、获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3、获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        //4、执行方法
        List<Brand> brands = brandMapper.selectByCondition(status,companyName,brandName);
        System.out.println(brands);

        //释放资源
        sqlSession.close();
    }

②封装对象作为参数

1、BrandMapper接口

根据ID修改用户信息java javaweb根据id查询信息_java_10


2、BrandMapper.xml不改动

根据ID修改用户信息java javaweb根据id查询信息_mysql_11


这里直接将接收到的brand对象的status,company、brandname属性给与对应的参数名上。

3、test修改

@Test
    public void testSelectByCondition() throws IOException {
//        接收参数
        int status = 1;
        String companyName = "华为";
        String brandName = "华为";
//        为模糊匹配like处理参数
        companyName = "%" + companyName + "%";
        brandName = "%" + brandName + "%";

        //封装对象
        Brand brand = new Brand();
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setStatus(status);

        //1、获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3、获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        //4、执行方法
        List<Brand> brands = brandMapper.selectByCondition(brand);
        System.out.println(brands);

        //释放资源
        sqlSession.close();
    }

将用户传来的参数封装为brand对象,再由brand对象传给sql语句,sql语句进行拆分后分别赋给同属性名的参数。

查询成功:

根据ID修改用户信息java javaweb根据id查询信息_java_12


③map集合方法

1、brandMapper接口

List<Brand> selectByCondition(Map map);

2、BrandMapper.xml的sql语句不改动

3、test修改
保证map中的键的名称和sql语句中需要的参数名称一一对应。

@Test
    public void testSelectByCondition() throws IOException {
//        接收参数
        int status = 1;
        String companyName = "华为";
        String brandName = "华为";
//        为模糊匹配like处理参数
        companyName = "%" + companyName + "%";
        brandName = "%" + brandName + "%";

        //封装对象
        Map map = new HashMap();
        map.put("status",status);
        map.put("companyName",companyName);
        map.put("brandName",brandName);

        //1、获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3、获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        //4、执行方法
        List<Brand> brands = brandMapper.selectByCondition(map);
        System.out.println(brands);

        //释放资源
        sqlSession.close();
    }

这个方法其实就和封装对象类似,不过这里是封装为了map对象。

总结:

根据ID修改用户信息java javaweb根据id查询信息_java_13