本节主要内容
1:根据上节课中提出的需求完成②:根据用户名模糊查询${}的使用
2:测试代码实现
3:总结&下节预告
本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第五篇 mybatis入门程序之需求开发2根据用户名模糊查询.
声明:本文系凯哥原创。转载请注明出处
一:根据用户名模糊查询分析
1.1:使用sql语句模糊查询出用户名是张三的sql语句怎么写?
SELECT * FROM USER WHERE username LIKE '%张三%'
查询结果:
那么在mybatis怎么使用?
思考
1:查询传入的是string类型的。那么parameterType应该怎么写?
2:mybatis中怎么使用%%并且原文解析?是使用#{}还是使用其他的呢?
3:既然是模糊查询,查询出的是多条数据,是列表。那么resultType由应该怎么写呢?
解答:
1:回忆上节所学的。parameteType:输入参数的Java类型。可以是基本类型、对象类型、map类型等。既然是java类型的。那么String对应java类型完整怎么写呢?
java.lang.String
2:使用${}进行处理
3:再次回忆上节课。resultType:输出结果所映射的java类型(也就是单条结果所以对应的java类型)
单条结果数据的数据类型。这里单条数据类型是pojo.user所以对应的类型应该是pojo.user了。
根据以上分析,我们可以在userMapper.xml文件中得到如下配置:
如果想用#{}写的话:
测试代码中:
userMapper.xml中:
在代码中写入%%不是很好。所以优化后,使用${}
说明:
${}:表示一个sql的连接符。如果java中 +作为连接符使用一样 连接前后语句的
${value}:里面的value表示输入参数的名称
如果该参数是简单类型的,那么${}里面的参数名称必须是value
${}:这种写法存在sql注入的风险。因为是连接符作用,其中数据原样输出的
所以需要慎用!!!!
但是在一些场景下,必须使用${}这种写法。
比如:排序的是,需要动态传入排序对应列名的。所以需要使用${}来原样输出。不过多解释.
SELECT * FROM USER WHERE username LIKE '%${value}%'
二:测试代码:
唯一不同的就是查询返回的是list的时候使用的是selectList
完整代码:
@Test
public void findUsersByNameTest() throws Exception{
//读取配置文件
//全局配置文件的路径
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用SqlSession的增删改查方法
//第一个参数:表示statement的唯一标示
//List
List
System.out.println(list);
//关闭资源
sqlSession.close();
}
执行结果:
如果想要查看打印出的sql语句。需要添加log4j日志。
1:添加jar
2:在config文件夹下添加log4j.properties文件。
内容如下:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
重新执行查看控制台输入语句:
三:总结&下节预告
通过本文学习,我们需要掌握的:
1:${}的使用。
${}的作用是什么?在什么请求下需要使用
${}为什么要慎用!!
2:log4j的使用
下节预告:
现在我们已经完成了根据id精确查找、根据用户名进行模糊查找。接下来我们要学习的是,向数据库中添加数据。那么在向数据库插入数据需要注意些什么呢?欢迎学习下一篇:《框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据》