IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Mybatis学习笔记:增删改查 -> 正文阅读

[Java知识库]Mybatis学习笔记:增删改查

学习内容:增删改查

1. 查(select)

数据库中的数据:
在这里插入图片描述

1.1、在UserMapper接口中编写抽象方法:

//根据id查找用户
User getUserById(int id);

1.2、在 UserMapper.xml中编写对应的sql语句:
注意:namespace中的包名要和 Dao/mapper 接口的包名一致!

<mapper namespace="dao.UserMapper">
<!--
 id : 就是对应的namespace中的方法名;
 resultType:Sql语句执行的返回值!
 parameterType : 参数类型!
-->
	<select id="getUserById" parameterType="int" resultType="pojo.User">
        select *from mybatis.user where id=#{id}
	</select>
</mapper>

1.3、在UserDaoTest中编写测试方法:

//根据id查询用户
@Test
public void getUserById(){
	//第一步:获得SqlSession对象
	SqlSession sqlSession=MybatisUtils.getSqlSession();
	//getMapper,通过sqlSession获得接口
	UserMapper mapper = sqlSession.getMapper(UserMapper.class);
	//查询
    User user= mapper.getUserById(1);
    System.out.println(user);
    //关闭SqlSession
    sqlSession.close();
}

查询结果:
在这里插入图片描述

2. 增(Insert)

2.1、在UserMapper接口中编写抽象方法:

//添加用户
int addUser(User user);

2.2、在 UserMapper.xml中编写对应的sql语句:

<insert id="addUser" parameterType="pojo.User">
    insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>

2.3、在UserDaoTest中编写测试方法:
注意:增、删、改都得提交事务(个人理解:对数据库中的数据有变动时,得提交事务)

//添加用户
@Test
public void addUser(){
  SqlSession sqlSession=MybatisUtils.getSqlSession();

  UserMapper mapper=sqlSession.getMapper(UserMapper.class);

  int result=mapper.addUser(new User(4,"ljy","123"));
  if (result>0){
    System.out.println("插入成功!");
  }
  //提交事务
  sqlSession.commit();
 
  sqlSession.close();
}

添加结果:
在这里插入图片描述
在这里插入图片描述

3. 改(update)

3.1、在UserMapper接口中编写抽象方法:

//修改用户
int updateUser(User user);

3.2、在 UserMapper.xml中编写对应的sql语句:

<update id="updateUser" parameterType="pojo.User">
   update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>

3.3、在UserDaoTest中编写测试方法:
注意:增、删、改都得提交事务(个人理解:对数据库中的数据有变动时,得提交事务)

 //修改用户
    @Test
    public void updateUser(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);

        int result=mapper.updateUser(new User(4,"ljy","123"));
        if(result>0){
            System.out.println("修改成功!");
        }
		//提交事务
        sqlSession.commit();
        
        sqlSession.close();

    }

修改结果:
在这里插入图片描述
在这里插入图片描述

4. 删(Delete)

4.1、在UserMapper接口中编写抽象方法:

//删除用户
int deleteUser(int id);

4.2、在 UserMapper.xml中编写对应的sql语句:

<delete id="deleteUser" parameterType="int">
    delete from mybatis.user where id=#{id};
</delete>

4.3、在UserDaoTest中编写测试方法:
注意:增、删、改都得提交事务(个人理解:对数据库中的数据有变动时,得提交事务)

@Test
public void deleteUser(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
        int result=mapper.deleteUser(4);
        if(result>0){
            System.out.println("删除成功!");
        }
        sqlSession.commit();
        sqlSession.close();
}

删除结果:
在这里插入图片描述
在这里插入图片描述

5. 万能Map

假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map!
和前面的步骤一样:
5.1、在UserMapper接口中编写抽象方法:

//万能的Map
int addUser2(Map<String,Object> map);

5.2、在 UserMapper.xml中编写对应的sql语句:

<!--对象中的属性,可以直接取出来    传递map的key-->
<insert id="addUser2" parameterType="map">
	<!--
	这里values()中的#{userid},#{userName},#{passWord}是传入的key
	可以自己定义,但是在编写测试方法的时候往Map集合中传键值对中的key必须和这里写的对应
	-->
    insert into mybatis.user (id,name,pwd) values (#{userid},#{userName},#{passWord})
</insert>

5.3、在UserDaoTest中编写测试方法:

@Test
    public void addUser2(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);

        Map<String, Object> map = new HashMap<>();
        map.put("userid",5);
        map.put("userName","ljy");
        map.put("passWord",123);
        mapper.addUser2(map);
        sqlSession.commit();
        sqlSession.close();
    }

结果:
在这里插入图片描述

6. 模糊查询

6.1、在UserMapper接口中编写抽象方法:

//模糊查询
List<User> getUserLike(String value);

6.2、在 UserMapper.xml中编写对应的sql语句:

<select id="getUserLike" resultType="pojo.User">
    select *from mybatis.user where name like #{value}
</select>

6.3、在UserDaoTest中编写测试方法:

@Test
public void getUserLike(){
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //查询名字中有l的
        List<User> userList= mapper.getUserLike("%l%");
        for(User user:userList){
            System.out.println(user);
        }
    }

查询结果:
在这里插入图片描述

这里我们在查询的时候,有两种写法:
1、Java代码执行的时候,传递通配符 % %

List<User> userList = mapper.getUserLike("%李%");

2、在sql拼接中使用通配符!(可能发生sql注入)

select * from mybatis.user where name like "%"#{value}"%"

7. 分析错误

  • 标签不要匹配错
  • resource 绑定mapper,需要使用路径!
  • 程序配置文件必须符合规范!
  • NullPointerException,没有注册到资源!
  • 输出的xml文件中存在中文乱码问题!
  • maven资源没有导出问题!
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:56:35  更:2022-01-03 15:57:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:33:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码