摘要:本篇主要介绍了Java开发之Mybatis基础学习-Map和模糊查询,通过具体的内容展现,希望对Java开发的学习有一定的帮助。
本篇主要介绍了Java开发之Mybatis基础学习-Map和模糊查询,通过具体的内容展现,希望对Java开发的学习有一定的帮助。
今天我们开始Mybatis基础学习:万能Map和模糊查询,主要内容就是学习Mybatis框架中的万能Map来解决一些参数过多的问题,以及实现基本的模糊查询功能。废话不多说,让我们开始今天的学习内容吧。
4.6 万能Map
为什么要使用Map呢?
假设创建的实体类,或者数据库中的表,字段参数过多,如果将参数全部列出比较麻烦,这时应该考虑使用万能的Map!
接下来,就让我们一起来看看,如何使用万能的Map来解决具体的问题吧!
4.6.1 使用Map增加用户
首先是使用万能的Map来插入用户信息
1.编写UserMapper接口
public interface UserMapper {
// 插入用户信息 (常规形式的插入数据)
int addUser(User user);
// 使用万能的Map (与上面的addUser作用大致相同)
int addUser2(Map<String,Object> map);
}
2.编写UserMapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"//mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper">
<!-- 插入用户信息: 传递map中的key-->
<insert id="addUser" parameterType="map">
insert into mybatis.user(id, pwd) values (#{userId},#{passWord});
</insert>
</mapper>
3.编写UserDaoTest测试类
public class UserDaoTest {
@Test
public void addUser2() {
// 获取sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 获取Mapper接口对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 获取Map对象
Map<String, Object> map = new HashMap<String, Object>();
// 通过map的键值对设置参数
map.put("userId",4);
map.put("userName","林迈克");
map.put("passWord","lpk123456");
// 调用addUser2方法新增用户
mapper.addUser2(map);
// 关闭sqlSession
sqlSession.close();
}
}
4.测试结果
查看控制台输出
查看数据库信息
结果:插入用户信息成功!
4.6.2 使用Map查询用户
当然,也使用万能的Map来查询用户信息
1.编写UserMapper接口
public interface UserMapper
// 根据Id查询用户
User getUserById(int id);
// 使用万能的Map:与上面的getUserById作用相同
User getUserById2(Map<String,Object> map);
}
2.编写UserMapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"//mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper">
<!-- 通过id查询用户信息: 传递map中的key -->
<select id="getUserById2" parameterType="map" resultType="com.kuang.pojo.User">
select * from mybatis.user where id = #{helloId} and name = #{name};
</select>
</mapper>
3.编写UserDaoTest测试类
public class UserDaoTest {
@Test
public void getUserById2() {
// 获取sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 获取Mapper接口对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 获取Map对象
Map<String, Object> map = new HashMap<String, Object>();
// 通过键值对设置参数
map.put("helloId",2);
// 调用getUserById2方法查询指定用户
mapper.getUserById2(map);
// 打印map的值
System.out.println(map);
// 关闭sqlSession
sqlSession.close();
}
}
4.测试结果
4.6.3 Map和对象传递参数区别
1.Map传递参数
直接在sql中取出key即可:这里的parameterType=“map”
<!--传递map中的key-->
<select id="getUserById2" parameterType="map" resultType="com.kuang.pojo.User">
select * from mybatis.user where id = #{helloId} and name = #{name};
</select>
2.对象传递参数
直接在sql中取对象即可:这里的parameterType=“Object”
<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
select * from mybatis.user where id = #{id}
</select>
3.不设置参数类型
只有一个基本类型参数的情况下,可以直接在sql中取到!
<!--不设置参数类型 -->
<select id="getUserById" resultType="com.kuang.pojo.User">
select * from mybatis.user where id = #{id}
</select>
特别提醒:多个参数可以使用万能的Map或者注解!
了解了万能的Map如何使用后,接下来我们再学习一下如何实现模糊查询!
4.7 模糊查询
4.7.1 Java代码中使用通配符
Java代码执行的时候,传递通配符% %
1. 编写接口方法
public interface UserMapper {
// 模糊查询用户
List<User> getUserLike(String value);
}
2. 编写xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"//mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper">
<!-- 使用模糊查询,注意要设置返回值类型 -->
<select id="getUserLike" resultType="com.kuang.pojo.User">
select * from mybatis.user where name like #{value}
</select>
</mapper>
3. 编写单元测试方法
public class UserDaoTest {
@Test
public void getUserLike() {
// 获得sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 获取Mapper接口对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 调用getUserLike方法进行模糊查询:传递通配符% %
List<User> userList = mapper.getUserLike("%林%");
// 遍历User列表数据
for (User user : userList) {
System.out.println(user);
}
// 关闭sqlSession
sqlSession.close();
}
}
4. 测试结果
结果:成功查询到用户名中包含“林:的用户信息!
4.7.2 SQL语句中使用通配符
在SQL拼接中使用通配符"%"#{ }"%"
1. 编写UserMapper接口
public interface UserMapper {
// 模糊查询用户
List<User> getUserLike(String value);
}
2. 编写UserMapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"//mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace=绑定一个对应的Dao/Mapper接口 -->
<mapper namespace="com.kuang.dao.UserMapper">
<!-- select * from mybatis.user where id = ?
SQL注入:select * from mybatis.user where id = 1 or 1=1 -->
<!-- 模糊查询:"%"#{value}"%"相当于拼接字符串,防止SQL注入 -->
<select id="getUserLike" resultType="com.kuang.pojo.User">
select * from mybatis.user where name like "%"#{value}"%"
</select>
</mapper>
3. 编写UserDaoTest测试类
public class UserDaoTest {
@Test
public void getUserLike() {
// 获得sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 获取Mapper接口对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 调用getUserLike方法进行模糊查询:传递通配符% %
List<User> userList = mapper.getUserLike("%林%");
// 遍历User列表数据
for (User user : userList) {
System.out.println(user);
}
// 关闭sqlSession
sqlSession.close();
}
}
4. 测试结果
结果:成功查询到用户名中包含“林:的用户信息!
有关万能的Map和模糊查询的学习就到此结束啦。
✅ 扫码免费获取基础课程·答疑解惑·职业测评
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号