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会报错。