02_模糊查询

【工程截图和数据库同01】

【user.xml】

根据用户名来查询对应的User

<select id="findUserByName" parameterType="java.lang.String" resultType="com.Higgin.Mybatis.po.User">
      SELECT *  FROM USER WHERE username LIKE #{value}
</select> <select id="findUserByName2" parameterType="java.lang.String" resultType="com.Higgin.Mybatis.po.User"> SELECT * FROM USER WHERE username LIKE '%${value}%' </select>

1.根据用户名称模糊查询用户信息,可能返回多条
2.resultType :指定就是单条记录所映射的java对象类型
3.${ }:表示拼接sql字符串,将接受到参数的内容不加任何修饰拼接在sql中。
4.使用${}拼接字符串,引起sql注入,不建议使用
5.${value}:接受输入参数的内容,如果传入类型是简单的类型,${}中只能使用value

【MyBatisTest.java】

@Test
    public void testFindUserByName() throws IOException{
        //mybatis配置文件
        String resource="SqlMapConfig.xml";
        
        //得到配置文件
        InputStream inputStream=Resources.getResourceAsStream(resource);
        
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        //通过工厂得到SqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        
        //通过SqlSession操作数据库
        //第一个参数:银蛇文件中statement的id,等于:namespace+"."+statement的id
        //第二个参数:指定换个映射文件中的所撇皮的parameterType类型的参数
        List<User> userList=sqlSession.selectList("test.findUserByName2", "小明");  //不推荐!!!!以引起SQL注入
        for (User user : userList) {
            System.out.println(user.toString());
        }
        
        //释放资源
        sqlSession.close();
    }

【运行结果如下】

【MyBatisTest.java】

@Test
    public void testFindUserByName() throws IOException{
        //mybatis配置文件
        String resource="SqlMapConfig.xml";
        
        //得到配置文件
        InputStream inputStream=Resources.getResourceAsStream(resource);
        
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        //通过工厂得到SqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        
        //通过SqlSession操作数据库
        //第一个参数:银蛇文件中statement的id,等于:namespace+"."+statement的id
        //第二个参数:指定换个映射文件中的所撇皮的parameterType类型的参数
        List<User> userList=sqlSession.selectList("test.findUserByName", "%小明%");  //推荐
        for (User user : userList) {
            System.out.println(user.toString());
        }
        
        //释放资源
        sqlSession.close();
    }

 【运行结果】

【注意:selectOne 和 selectList区别】

selectOne表示查询出一条记录进行映射,如果使用selectOne可以实现,使用selectList也可以是实现。(即List集合中只有一个对象)

selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne,使用selectOne会报错。

原文地址:https://www.cnblogs.com/HigginCui/p/5699558.html