前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >4.Mybatis增删改查的简单实现

4.Mybatis增删改查的简单实现

作者头像
DencyCheng
发布于 2020-11-17 02:45:03
发布于 2020-11-17 02:45:03
29700
代码可运行
举报
文章被收录于专栏:SpringBootSpringBoot
运行总次数:0
代码可运行

1.namespace

namespace中的包名要和 mapper 接口名一致!

2.select

选择,查询语句;

  • id : 就是对应的namespace中的方法名
  • resultType : sql语句执行返回值的类型
  • parameterType : 参数类型

1.编写接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 调用xml方式
     * @param id
     * @return
     */
    public User selectUserForXml(Integer id);

2.编写对应mapper中的sql语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <select id="selectUserForXml" resultType="com.dencycheng.entiy.User" parameterType="int">
        select * from user where id = #{id}
    </select>

3.测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    public void selectOne() {
        SqlSession sqlSession = null;
        try {
            //获取SqlSession
            sqlSession = MybatisUtils.getSqlSession();
            //获取mapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);

            //xml第二种方式
            User user = mapper.selectUserForXml(2);
            System.out.println(user);

        } finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
User{id=2, name='黑猫', pwd='212122'}

3.insert

1.编写接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 增加
     * @param user
     */
    public void save(User user);

2.编写对应mapper中的sql语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <insert id="save" parameterType="com.dencycheng.entiy.User">
        insert user (name,pwd) values (#{name},#{pwd})
    </insert>

3.测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //增删改需要提交事物
    @Test
    public void save(){
        SqlSession sqlSession = null;
        try {
            //获取SqlSession
            sqlSession = MybatisUtils.getSqlSession();
            //获取mapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);

            int save = mapper.save(new User("21212121", "1"));
            System.out.println("执行行数:"+save);
            sqlSession.commit();

        } finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
执行行数:1

4.update

1.编写接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 更新
     * @param user
     */
    public void update(User user);

2.编写对应mapper中的sql语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <update id="update" parameterType="com.dencycheng.entiy.User">
        update user set name = #{name}, pwd = #{pwd} where id = #{id}
    </update>

3.测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    public void update(){
        SqlSession sqlSession = null;
        try {
            //获取SqlSession
            sqlSession = MybatisUtils.getSqlSession();
            //获取mapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);

            mapper.update(new User(1,"z","1"));
            sqlSession.commit();

        } finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }

5.delete

1.编写接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 删除
     * @param id
     */
    public void delete(Integer id);

2.编写对应mapper中的sql语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <delete id="delete" parameterType="int">
        delete from user where id = #{id}
    </delete>

3.测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Test
    public void delete(){
        SqlSession sqlSession = null;
        try {
            //获取SqlSession
            sqlSession = MybatisUtils.getSqlSession();
            //获取mapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);

            mapper.delete(1);

            sqlSession.commit();

        } finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }

注意:mybatis在增删改的时候不会默认提交事物。有两种方式提交

1.在执行完语句后加上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sqlSession.commit();

2.在打开session的时候设置自动提交

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SqlSessionFactory
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    SqlSession openSession(boolean var1);

DefaultSqlSessionFactory

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public SqlSession openSession(boolean autoCommit) {
        return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, autoCommit);
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }

常见错误

  • 标签不要匹配错。
  • resource 绑定mapper,需要使用路径
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <mappers>
        <mapper resource="mybatis/UserMapper.xml"/>
    </mappers>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Mybatis—CURD以及模糊查询
配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!
Albert_xiong
2021/06/21
5150
Mybatis—CURD以及模糊查询
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
6360
MyBatis 从入门到精通:CRUD操作详解
在 MyBatis 中,namespace 的包名要和 DAO/Mapper 接口的包名一致!
默 语
2024/11/20
880
Mybatis由浅入深 - 02增删改查CRUD
这是Mybatis由浅入深的第2节,上文传送门:【Mybatis由浅入深 -01入门】
天罡gg
2022/12/02
7260
Mybatis由浅入深 - 02增删改查CRUD
SSM之Mybatis的学习
官方中文文档:https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases
Rochester
2020/09/01
6180
SSM之Mybatis的学习
MyBatis增删改查(CRUD)操作
CRUD操作指的就是增加(Create)、读取(Retrieve)、更新(Update)、删除(Delete)这四种基本数据库操作;
久绊A
2024/03/01
2050
Mybatis第二篇| CRUD,这才是程序员入门第一课
增删改查(CRUD)是程序员必会的技能,我们大部分的时间也都是消耗在增删改查上,当然我们不能只做一个只会CRUD的程序员,当我们掌握并且熟练了CRUD后,我们可以对CRUD进行进一步的优化。这篇文章主要讲解的是如何通过Mybatis来实现CRUD。
Python进击者
2020/04/02
6960
MyBatis实现增删改查
生成器这里选择Maven,然后名称可以自己命名,Archetype这里可以使用默认的也可以自己添加,这里使用自己添加的
愷龍
2022/12/20
5120
MyBatis实现增删改查
【Mybatis 入门指北】2、Mybatis 入门实例及 CRUD
上一篇文章中我们讲了什么是持久化以及 Mybatis 的相关简介,今天就来看看如何创建一个 Mybatis 入门实例以及如何利用 Mybatis 进行 CRUD。
村雨遥
2022/06/16
3390
【Mybatis 入门指北】2、Mybatis 入门实例及 CRUD
mybatis 实现增删改
reyeye
2023/10/13
1720
mybatis 实现增删改
MyBatis 实战:增删改查入门
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
耕耘实录
2021/12/07
5620
Mybatis入门增删改查学习笔记
Mybatis是基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身
咕咕星
2021/01/03
4070
Mybatis入门增删改查学习笔记
MyBatis
新建项目 1. 新建一个普通的maven项目 2. 删除src目录 3. 导入maven依赖
用户11332765
2024/10/28
1720
MyBatis
Mybatis—ResultMap结果集映射与日志工厂、分页
password出现了null,表示存在了问题。 结果原因: select * from user where id = #{id} 可以看做 select id,name,pwd from user where id = #{id}
Albert_xiong
2021/06/21
4890
Mybatis—ResultMap结果集映射与日志工厂、分页
Mybatis学习2:实现增删改查操作CRUD
环境搭建见本专栏上篇。 查询用户 根据指定id查询用户 1.编写接口 //根据id查询用户 User selectUserById(int id); 2.修改Mapper.xml <select id="selectUserById" resultType="com.kuang.pojo.User"> select * from user where id = #{id} </select> 3.编写测试类 @Test public void tsetSelectU
zstar
2022/06/14
2250
2.第一个简单的Mybatis程序
在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
DencyCheng
2020/11/17
4060
2.第一个简单的Mybatis程序
MyBatis快速上手增删改查
作为一个快乐的小码农,在每一个阶段往往都在重复写着不同版本的,学生管理,用户管理,注册登录,从 JavaSE 的控制台版,或者 GUI 版,再到 JavaWeb的 JSP版,再到纯粹使用 HTML 作为前端展示的版本,以及使用一个更新的技术,在此其中,我们用过 txt 做数据库,用 XML 也可以,到现在常用的 MySQL,增删改查一直是我们必不可少的一部分内容,即使你不懂原理,即使你对这个技术的理解不是很深刻,拿出你的增删改查,噼里啪啦就是一段乱敲,好歹还是能让你着手先做起来(当然,对技术的理解还是很重要的),今天就和大家聊一聊 MyBatis 这门技术的 CURD (增删改查)
BWH_Steven
2020/02/20
5270
Mybatis 框架学习(二)—— 简单CRUD的实现
通过这个CRUD的操作,我们能很明确的感觉到mybatis操作数据库比 JDBC操作数据库的简洁明了
RAIN7
2022/06/12
3790
Mybatis增删改查操作
1. 增加数据操作 编写UserMapper映射文件 <!--插入操作--> <insert id="add" parameterType="com.xdr630.domain.User"> insert into user values(#{id},#{username},#{password}) </insert> 创建user表 [在这里插入图片描述] User实体类 public class User { private int id; private String user
兮动人
2022/03/06
5430
java进阶|MyBatis系列文章(一)基础性文章的思考增删改查
本篇文章主要是使用statetment最原生的方式操作数据库以及基于xml方式操作数据库,为什么自己又去写xml方式操作数据了呢,写了几篇示例程序觉得还是xml方式在支持动态sql方面有着强大的能力,嗯,后面自己会慢慢在用xml方式进行mybatis的操作吧。
码农王同学
2020/04/27
3490
相关推荐
Mybatis—CURD以及模糊查询
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文