框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

本节主要内容

1:根据上节课中提出的需求完成②:根据用户名模糊查询${}的使用

2:测试代码实现

3:总结&下节预告

本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第五篇 mybatis入门程序之需求开发2根据用户名模糊查询.

声明:本文系凯哥原创。转载请注明出处

一:根据用户名模糊查询分析

1.1:使用sql语句模糊查询出用户名是张三的sql语句怎么写?

SELECT * FROM USER WHERE username LIKE '%张三%'

查询结果:

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

那么在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文件中得到如下配置:

如果想用#{}写的话:

测试代码中:

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

userMapper.xml中:

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

在代码中写入%%不是很好。所以优化后,使用${}

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

说明:

${}:表示一个sql的连接符。如果java中 +作为连接符使用一样 连接前后语句的

${value}:里面的value表示输入参数的名称

如果该参数是简单类型的,那么${}里面的参数名称必须是value

${}:这种写法存在sql注入的风险。因为是连接符作用,其中数据原样输出的

所以需要慎用!!!!

但是在一些场景下,必须使用${}这种写法。

比如:排序的是,需要动态传入排序对应列名的。所以需要使用${}来原样输出。不过多解释.

<!-- 根据用户名查询用户列表 -->

<!-- ${}:表示一个sql的连接符。如果java中 +作为连接符使用一样 连接前后语句的-->

<!-- ${value}:里面的value表示输入参数的名称

如果该参数是简单类型的,那么${}里面的参数名称必须是value

-->

<!-- ${}:这种写法存在sql注入的风险。因为是连接符作用,其中数据原样输出的

所以需要慎用!!!!

但是在一些场景下,必须使用${}这种写法。

比如:排序的是,需要动态传入排序对应列名的。所以需要使用${}来原样输出

-->

<select id="findUserByUserName" parameterType="java.lang.String" resultType="com.kaigejava.mybatis.pojo.User">

SELECT * FROM USER WHERE username LIKE '%${value}%'

</select>

二:测试代码:

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

唯一不同的就是查询返回的是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<User> list = sqlSession.selectList("test.findUserByUserName1", "%张三%");

List<User> list = sqlSession.selectList("test.findUserByUserName", "小明");

System.out.println(list);

//关闭资源

sqlSession.close();

}

执行结果:

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

如果想要查看打印出的sql语句。需要添加log4j日志。

1:添加jar

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

2:在config文件夹下添加log4j.properties文件。

内容如下:

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

# 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

重新执行查看控制台输入语句:

框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询

三:总结&下节预告

通过本文学习,我们需要掌握的:

1:${}的使用。

${}的作用是什么?在什么请求下需要使用

${}为什么要慎用!!

2:log4j的使用

下节预告:

现在我们已经完成了根据id精确查找、根据用户名进行模糊查找。接下来我们要学习的是,向数据库中添加数据。那么在向数据库插入数据需要注意些什么呢?欢迎学习下一篇:《框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值