MyBatis之sql拼接

MyBatis之sql拼接
使用模糊查询时需要用到select * FROM user WHERE username LIKE '%月%'
普通占位符用#{},sql拼接时要用${}


    <select id="findUserByNaem" parameterType="String" resultType="com.hl.myabtis.first.beas.User">
        select * FROM user WHERE address LIKE '%${value}%'
    select>

值得注意的是模糊查询的结果是一个集合,但是resultType表示的是单条记录的类型,所以仍然是普通javaBean.

这种写法容易被不法分子利用——引起sql注入

测试代码:

@Test
    public void testFindUserByName() throws Exception{
        //创建会话工厂
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource );
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //使用SqlSession操作数据库
        /**
         * 第一个参数是statement的ID,等于命名空间+id
         * 第二个参数是传递的参数,指定与映射文件中parameterType匹配的类型参数
         */
        List userList = sqlSession.selectList("test.findUserByNaem", "明");
        for (User user : userList) {
            System.out.println(user);
        }
        //关闭资源
        sqlSession.close();
    }

参考:http://blog.csdn.net/leisure_life/article/details/72628387

你可能感兴趣的:(mybatis)