Java开发之Mybatis基础学习-Map和模糊查询
小职 2021-11-29 来源 :狂奔の蜗牛rz 阅读 484 评论 0

摘要:本篇主要介绍了Java开发之Mybatis基础学习-Map和模糊查询,通过具体的内容展现,希望对Java开发的学习有一定的帮助。

本篇主要介绍了Java开发之Mybatis基础学习-Map和模糊查询,通过具体的内容展现,希望对Java开发的学习有一定的帮助。

Java开发之Mybatis基础学习-Map和模糊查询



今天我们开始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.测试结果

查看控制台输出

Java开发之Mybatis基础学习-Map和模糊查询


查看数据库信息

Java开发之Mybatis基础学习-Map和模糊查询


结果:插入用户信息成功!


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.测试结果

Java开发之Mybatis基础学习-Map和模糊查询


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. 测试结果

Java开发之Mybatis基础学习-Map和模糊查询

结果:成功查询到用户名中包含“林:的用户信息!


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. 测试结果

Java开发之Mybatis基础学习-Map和模糊查询

结果:成功查询到用户名中包含“林:的用户信息!


有关万能的Map和模糊查询的学习就到此结束啦。


✅  扫码免费获取基础课程·答疑解惑·职业测评

Java开发之Mybatis基础学习-Map和模糊查询



本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程