Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Mybatis—CURD以及模糊查询

Mybatis—CURD以及模糊查询

作者头像
Albert_xiong
发布于 2021-06-21 09:44:42
发布于 2021-06-21 09:44:42
5860
举报
文章被收录于专栏:Mybatis学习Mybatis学习

命名空间namespace:

配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!

1.查询(select)

select:

接口中的方法名与映射文件中的SQL语句ID 一一对应

  1. id
  2. parameterType
  3. resultType

案例:根据id查询用户

1.写接口(在UserMapper中添加对应的方法)

代码语言:javascript
AI代码解释
复制
public interface UserMapper {
    //根据ID查询用户
    User getuserByID(int id);
    }

2.UserMapper.xml配置文件的编写Sql语句

代码语言:javascript
AI代码解释
复制
<select id="getuserByID" parameterType="int" resultType="com.xiong.pojo.User">
   	select * from mybatis.user where id = #{id};
</select>

3.测试

代码语言:javascript
AI代码解释
复制
    @Test
    public void getUserID(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getuserByID(4);
        System.out.println(user);
        sqlSession.close();
    }

注意:根据密码和名字直接查询用户 使用万能的Map方法 1.在接口方法中,直接传递Map;

代码语言:javascript
AI代码解释
复制
User getuserByID2(Map<String,Object> map);

2.在编写sql语句的时候,需要传递参数的类型,参数类型是map

代码语言:javascript
AI代码解释
复制
    <select id="getuserByID2" resultType="com.xiong.pojo.User" parameterType="map">
        select * from mybatis.user where id = #{userID} and name =#{username};
    </select>

此处的userID,username可以不是数据库里面的字段,用map方法添加就可。

3.在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!

代码语言:javascript
AI代码解释
复制
    @Test
    public void getUserID2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map map= new HashMap<String, Object>();
        map.put("userID",2);

        map.put("username","gou");

        User user = mapper.getuserByID2(map);
        System.out.println(user);
        sqlSession.commit();
        sqlSession.close();
    }

总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可

2.插入(insert)

insert 1.在UserMapper中添加对应的方法

代码语言:javascript
AI代码解释
复制
int addUser(User user);

2.在UserMapper.xml中添加insert语句

代码语言:javascript
AI代码解释
复制
<insert id="addUser" parameterType="com.xiong.pojo.User">
        insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});
</insert>

3.测试

代码语言:javascript
AI代码解释
复制
    @Test
    public void adduser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.addUser(new User(4, "狗哥", "45412331"));
        if(i>0){
            System.out.println("插入成功");
        }
        //记得提交事物
        sqlSession.commit();
        sqlSession.close();
    }

注意点:增、删、改操作需要提交事务!

3.更新(update)

1.编写接口方法

代码语言:javascript
AI代码解释
复制
int updateUser(User user);

2.编写接口对应的UserMapper.xml文件中的SQL

代码语言:javascript
AI代码解释
复制
<update id="updateUser" parameterType="com.xiong.pojo.User">
    update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
</update>

3.测试(记住一定要提交事物)

代码语言:javascript
AI代码解释
复制
    @Test
    public void updateuser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        System.out.println(sqlSession);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int i = mapper.updateUser(new User(5, "hh", "55464545"));
        if(i>0){
            System.out.println("更新成功");
        }

        sqlSession.commit();
        sqlSession.close();
    }

4.删除(delete)

1.编写接口方法

代码语言:javascript
AI代码解释
复制
int delete(int id);

2.编写对应配置文件的SQL

代码语言:javascript
AI代码解释
复制
    <delete id="delete" parameterType="int">
        delete from mybatis.user where id=#{id};
    </delete>

3.测试(记得要提交事物)

代码语言:javascript
AI代码解释
复制
    @Test
    public void deleteuser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        System.out.println(sqlSession);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int i = mapper.delete(4);
        if(i>0){
            System.out.println("更新成功");
        }

        sqlSession.commit();
        sqlSession.close();
    }

总结:所有的增删改操作都需要提交事务!

5.模糊查询(like)

直接在sql语句中拼接通配符,会引起sql注入

代码语言:javascript
AI代码解释
复制
<!--    模糊查询-->
    <select id="getUserListByLike" resultType="com.xiong.pojo.User">
        select * from mybatis.user where name like "%"#{value}"%";
    </select>

测试:

代码语言:javascript
AI代码解释
复制
    @Test
    public void getUserListByLike(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = (List<User>) mapper.getUserListByLike("李");
        for (User user1 : user) {
            System.out.println(user1);
        }
        sqlSession.commit();
        sqlSession.close();
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MyBatis 从入门到精通:CRUD操作详解
在 MyBatis 中,namespace 的包名要和 DAO/Mapper 接口的包名一致!
默 语
2024/11/20
1790
SSM-Mybatis(1)[通俗易懂]
注意 maven中的约定的事/src/main/resources中的配置文件会被导出,但是我们写的实现类xml文件在/src/main/java下,maven默认是不会导出的,所以需要手动配置
全栈程序员站长
2022/09/21
3040
SSM-Mybatis(1)[通俗易懂]
SSM之Mybatis的学习
官方中文文档:https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases
Rochester
2020/09/01
7370
SSM之Mybatis的学习
Mybatis第二篇| CRUD,这才是程序员入门第一课
增删改查(CRUD)是程序员必会的技能,我们大部分的时间也都是消耗在增删改查上,当然我们不能只做一个只会CRUD的程序员,当我们掌握并且熟练了CRUD后,我们可以对CRUD进行进一步的优化。这篇文章主要讲解的是如何通过Mybatis来实现CRUD。
Python进击者
2020/04/02
7730
Mybatis—ResultMap结果集映射与日志工厂、分页
password出现了null,表示存在了问题。 结果原因: select * from user where id = #{id} 可以看做 select id,name,pwd from user where id = #{id}
Albert_xiong
2021/06/21
6360
Mybatis—ResultMap结果集映射与日志工厂、分页
MyBatis 实现数据的增删改查
1. 查询操作 select 1.1 根据各属性来查询用户 在 UserDao 中添加对应方法: /** * @param name 用户名 * @return 对应用户名的用户对象 * @description 根据用户名获取用户 * @date 2020/7/14 14:52 * @author cunyu1943 * @version 1.0 */ User getUserByName(String name); /** * @param password 密码 * @return 对应密码的用户对
村雨遥
2020/07/21
7090
【Mybatis 入门指北】2、Mybatis 入门实例及 CRUD
上一篇文章中我们讲了什么是持久化以及 Mybatis 的相关简介,今天就来看看如何创建一个 Mybatis 入门实例以及如何利用 Mybatis 进行 CRUD。
村雨遥
2022/06/16
4280
【Mybatis 入门指北】2、Mybatis 入门实例及 CRUD
Mybatis 框架学习(二)—— 简单CRUD的实现
通过这个CRUD的操作,我们能很明确的感觉到mybatis操作数据库比 JDBC操作数据库的简洁明了
RAIN7
2022/06/12
4830
4.Mybatis增删改查的简单实现
1.namespace namespace中的包名要和 mapper 接口名一致! 2.select 选择,查询语句; id : 就是对应的namespace中的方法名 resultType : sql语句执行返回值的类型 parameterType : 参数类型 1.编写接口 /** * 调用xml方式 * @param id * @return */ public User selectUserForXml(Integer id); 2.编写对应m
DencyCheng
2020/11/17
3780
Mybatis-02 CRUD
创建一个新user,id:1、name:李、pwd:1456,通过sql操作,加入数据库。
张小驰出没
2021/04/15
4100
Mybatis-02  CRUD
初入Mybatis:简介及配置
org.apache.ibatis.binding.BindingException: Type interface com.rui.dao.UserDao is not known to the MapperRegistry.
乐心湖
2020/07/31
4840
mybatis 实现增删改
reyeye
2023/10/13
2590
mybatis 实现增删改
MyBatis
新建项目 1. 新建一个普通的maven项目 2. 删除src目录 3. 导入maven依赖
用户11332765
2024/10/28
3720
MyBatis
Maven项目集成Mybatis
上述实例类TdyMemberInfo 中定义的变量 id 对应表t_dy_member_info中的member_id,在TdyMemberInfoMapper.xml的resultMap 中会有对应的映射关系。 startIndex、pageSize 这两个字段用于分页查询。
用户7741497
2022/02/28
5760
MyBatis增删改查(CRUD)操作
CRUD操作指的就是增加(Create)、读取(Retrieve)、更新(Update)、删除(Delete)这四种基本数据库操作;
久绊A
2024/03/01
3600
【Mybatis】动态SQL 实例
动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。
全栈程序员站长
2022/09/09
9210
【Mybatis】动态SQL 实例
MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
一、使用MyBatis对表执行CRUD操作——基于XML的实现 1、定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0" encodi
一枝花算不算浪漫
2018/05/18
7600
【愚公系列】2023年10月 Java教学课程 115-Mybatis(缓存)
数据库查询缓存是指在数据库系统中,针对一些常被查询的结果,将其缓存到内存中,以减少对数据库的查询请求,从而提高数据库查询效率的一种技术。
愚公搬代码
2025/05/28
1320
Mybatis-06 动态Sql
在数据库字段命名规范中常常用下划线 “_” 对单词进行连接,如:"create_time",而开发中实体属性通常会采用驼峰命名法命名为 createTime 。
张小驰出没
2021/04/15
5410
Mybatis-06  动态Sql
5.Mybatis中万能的Map
当我们需要关联查询的时候我们可以用Map作为返回结果。如果不用的话也可以使用resultMap的方式。
DencyCheng
2020/11/17
6920
相关推荐
MyBatis 从入门到精通:CRUD操作详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
首页
学习
活动
专区
圈层
工具
MCP广场
首页
学习
活动
专区
圈层
工具
MCP广场