MyBatis学习(二)之MyBatis 增删改查CRUD的实现。

记录自己在狂神说java中的学习情况,文章里有自己学习的理解和扩展,新手难免有理解偏差或者错误,恳请大佬指正。


在Java MyBatis的基础上,进行CRUD的学习。

MyBatis的CRUD

1.1 namespace

在mapper.xml文件中的namespace的包名要和Dao/Mapper接口的包名一致!

<mapper namespace="com.hj.dao.UserMapper">对应com/hj/dap/UserMapper.xml文件

关于这里的CRUD的具体详细内容可以查看: 官方文档。这里只简单挑选一些常用的字段和方法介绍。

1.2 select

选择查询语句。在<mapper>标签下使用<select>标签来使用。其中他的属性有:

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

我们只需要在UserMapper接口里增加对应的抽象方法:

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

然后将对应的UserMapper.xml文件里建立对应的映射:

<select id="getUserById" parameterType="int" resultType="com.hj.pojo.User">
    select * from mybatis.user where id=#{id};
</select>

然后就可以开始进行测试了!在测试文件UserMapperTest.java文件里添加如下方法:

@Test
public void getUserById() {
    SqlSession sqlSession;
    //获得SqlSession对象
    sqlSession = MybatisUtils.getSqlSession();
    //获取mapper对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //那些实现的接口都在mapper对象里调用
    User userById = mapper.getUserById(1);//如果该id对应的元素表里不存在则会返回null
    System.out.println(userById);

    sqlSession.close();
}

1.3 insert

插入语句。在<mapper>标签下使用<insert>标签来使用。其中他的属性有:

  • id:就是对应的namespace里包中的方法名
  • parameterType:参数类型

同样,我们只需要在UserMapper接口里增加对应的抽象方法:

//insert一个用户
boolean insertUser(User user);

然后将对应的UserMapper.xml文件里建立对应的映射:

<!--对象中的属性可以直接取出来,这里的user.id user.name user.pwd可以直接简化掉user.-->
<insert id="insertUser" parameterType="com.hj.pojo.User">
insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});
</insert>

这里为了防止插入重复的id的数据,可以将此sql语句改变一下:

在MySQL中为了防止重复插入,可以使用如下语句:

insert ignore into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});

即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是id索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据。

或者:

insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd}) on duplicate key update name=#{name},pwd=#{pwd};

即插入数据时,如果数据存在,则执行更新操作,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(id索引),如果存在,则执行update更新操作,如果不存在,则直接插入。

或者:

replace into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});

即插入数据时,如果数据存在,则删除再插入,前提条件同上。

然后就可以开始进行测试了!在测试文件UserMapperTest.java文件里添加如下方法:

//增删改要提交事务
@Test
public void insertUser() {
    SqlSession sqlSession;
    //获得SqlSession对象
    sqlSession = MybatisUtils.getSqlSession();
    //获取mapper对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User addUser = new User(5, "吴六", "666");
    //那些实现的接口都在mapper对象里调用
    boolean flag = mapper.insertUser(addUser);
    System.out.println(flag);
    if(flag) System.out.println("插入成功");
    //提交事务
    sqlSession.commit();
    sqlSession.close();
}

1.4 update

修改数据库中的记录。在<mapper>标签下使用<update>标签来使用。其中他的属性有:

  • id:就是对应的namespace里包中的方法名
  • parameterType:参数类型

同样,我们只需要在UserMapper接口里增加对应的抽象方法:

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

然后将对应的UserMapper.xml文件里建立对应的映射:

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

然后就可以开始进行测试了!在测试文件UserMapperTest.java文件里添加如下方法:

@Test
public void updateUser() {
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User user = new User(4, "赵七", "77777");
    boolean flag = mapper.updateUser(user);
    if (flag) {
        System.out.println("修改成功");
    }
    sqlSession.commit();
    sqlSession.close();
}

总结

步骤:

1.编写接口

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

3.测试(注意增删改需要提交事务)

本章代码

本章代码
中的mybatis-02部分

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值