首页 > 其他分享 >MyBatis框架的基本CRUD命令

MyBatis框架的基本CRUD命令

时间:2023-03-31 14:01:35浏览次数:23  
标签:语句 Map 框架 CRUD 查询 put paramMap MyBatis id

1、局部 SQL 配置文件重要标签说明:

 作用:把sql语句保存在Mybatis的局部配置文件中,给某个数据访问类使用;  根节点为<mapper>… </mapper>;  namespace:命名空间,其值为某一个dao层实现类的具体路径,表示这个类要使用相应的SQL语句。这个具体路径不要自己写,可以选中该类,右键,选择“copy Reference”,然后粘贴即可。  select标签存放查询语句,insert标签存放insert语句,update标签存放update语句, delete标签存放delete语句;  id:在整个配置文件中id值必须唯一,一般情况下,其值与dao层类中使用该SQL语句的方法名保持一致;  resultType:指定当前sql查询语句返回的数据类型。类型不是sql语句的最终类型,而是某一条数据的类型,一般用实体类表示,即用该实体类的“全路径”来表示。简化使用时,也可以用MAP数据类型;  parameterType:指定SQL语句接收的参数类型  一对mapper里,可以编写多条sql语句。   2、不带参数的简单查询: (1)select语句返回User实体对象: resultType="cn.java.entity.User" 表示返回多条User实体类,如: <select id="getAllUser" resultType="cn.java.entity.User"> SELECT * FROM users </select> (2) select 语句不使用实体类,直接用 Map 数据类型,返回 List<Map<String,Object>,更加简单,简化程序,如: <select id="getAllUserMap" resultType="Map"> SELECT * FROM users </select>   3、带参数的简单查询: (1)带一个参数简单查询: parameterType:指定SQL语句接收的参数类型 <select id="getUserById" resultType="map" parameterType="Long"> SELECT * FROM users WHERE id=#{0} </select>  实现类中的调用方法的代码如下: Long id = 1L; Map<String, Object> userMap = session.selectOne("cn.java.dao.impl.UserDaoImpl.getUserById", id); (2)带多个参数简单查询:  用Map封装,parameterType=Map: <select id="getUserByMulCondition" resultType="map" parameterType="Map"> SELECT * FROM users WHERE username='${username}' AND PASSWORD='${pwd}' </select>  实现类中的调用方法的代码如下: Map<String, Object> paramMap = new HashMap<String, Object>(); // 封装参数 paramMap.put("username", "admin"); paramMap.put("pwd", "123"); // 传递参数 Map<String, Object> userMap = session.selectOne("cn.java.dao.impl.UserDaoImpl.getUserByMulCondition", paramMap);   (4)简单的更新数据: 注意:  insert,delete,update操作没有resultType属性,默认返回int类型的值;  不同的更新操作,使用不同的标签;  parameterType=”Map”,表示参数类型为Map,用Map封装参数;  为了防止SQL注入攻击,SQL语句中使用#表示参数化SQL语句;  更新操作一定要提交事务, 执行命令: session.commit(); (1)插入一条记录时,代码如下: <insert id="addUser" parameterType="Map"> INSERT INTO users SET username=#{username},PASSWORD=#{password} </insert> 实现类中的调用方法的代码如下: Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("username", "Rose"); paramMap.put("password", "1234"); int resultInt = session.insert("cn.java.dao.impl.UserDaoImpl.addUser", paramMap); session.commit(); // 更新操作一定要提交事务 (2)插入多条记录时,使用foreach标签,代码如下: <insert id="addUserBatch" parameterType="cn.java.entity.User"> insert into users(username,PASSWORD) values <foreach collection="list" item="user" separator=","> (#{user.username},#{user.password}) </foreach> </insert> 实现类中的调用方法的代码如下: List<User> list = new ArrayList<>(); User user; for (int i = 0; i < 10; i++) { user = new User(); user.setUsername("test" + i); user.setPassword("666"); list.add(user); } int resultInt = session.insert("cn.java.dao.impl.UserDaoImpl.addUserBatch",list);   (5)动态查询数据: 注意:  实现动态查询;  where 标签:当有查询条件时,就使用 where 命令,当没有查询条件时,就不用 where 命令  if test:判断是否对某个字段进行查询,为空值就不查询该字段 代码如下: <select id="getCourseByDynam" resultType="Map" parameterType="Map"> SELECT * FROM course <where> <if test="cname!=null"> cname=#{cname} </if> <if test="credit!=null"> and credit=#{credit} </if> <if test="department!=null"> and department=#{department} </if> </where> </select> 实现类中的调用方法的代码如下: Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("cname", "数据结构"); //paramMap.put("credit", 4); //paramMap.put("department", "软件工程"); List<Map<String, Object>> courseList = session.selectList("cn.java.dao.impl.UserDaoImpl.getCourseByDynam", paramMap); for (Map<String, Object> map : courseList) { System.out.println(map);   (6)动态更新数据: 注意:  实现动态更新;  set标签:当有更新字段时,就使用set命令,当没有更新字段时, 语句为  UPDATE course SET id=NULL WHERE id=NULL 代码如下: <update id="updateCourseByDynam" parameterType="Map"> update course <set> <if test="cname!=null"> cname=#{cname}, </if> <if test="credit!=null"> credit=#{credit}, </if> <if test="department!=null"> department=#{department}, </if> id=#{id} </set> where id=#{id} </update> 实现类中的调用方法的代码如下: Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("cname", "数据库原理"); paramMap.put("credit", 4); // paramMap.put("department", "软工 1"); paramMap.put("id", 1); int resultInt = session.update("cn.java.dao.impl.UserDaoImpl.updateCourseByDynam", paramMap);

标签:语句,Map,框架,CRUD,查询,put,paramMap,MyBatis,id
From: https://www.cnblogs.com/qiqi-yi/p/17276023.html

相关文章

  • MyBatis参数传递
    MyBatis接口方法中可以接受各种各样的参数,MyBatis底层对于这些参数进行不同的封装处理方式**单个参数:1.POJO类型:2.Map集合:3.Collection:4.List:5.Array:6.其他类型:*多个参数:封装为map集合map.put("arg0",参数......
  • MyBatis 框架基本使用流程
    1、编写Mybatis主配置文件: mybatis.xml中重要标签说明:<!--配置数据库连接环境:driver、url、username、password--><environmentsdefault="mysql">//设置当前要使用的数据库<!--开始配置mysql--><environmentid="mysql">//给当前要使用的数据库环境命名,要唯一<......
  • JDBC和MyBatis数据库访问技术
    传统的JavaWeb应用开发时,一般使用JDBC进行数据库连接和操作SQL命令。但是,随着互联网技术的飞速发展,使用JDBC已经满足不了项目的开发需求,出现了Hibernate、MyBatis等一些优秀的持久层框架,它们结合了JDBC的优点,使得开发简捷、规范、快速,系统易维护、易扩展。1.1JDBC数据库访......
  • scrapy爬虫框架(二)scrapy中Selector的使用
      在scrapy框架前,相信大家或多或少的已经了解了一些网页数据解析方法,如:xpath、bs4、正则表达式等,但是在scrapy框架中也有一个内置的数据提取方法--Selector。在这里我们就先简单介绍一下Selector在scrapy中的运用及常用方法。  为了方便示例,我们以官方文档中的示例页面源码进......
  • Flask框架 之使用蓝图实现模块划分
     一、示例代码run.pyfromappimportcreate_appif__name__=='__main__':app=create_app()app.run(debug=True,port=5000)__init__.pyfromflaskimportFlaskfromapp.controllersimportconfig_blueprintdefcreate_app():app=Fla......
  • c# mqtt高性能服务器端源代码 开源框架包括服务器和客户端,支持mqtt3.0及5.0
    c#mqtt高性能服务器端源代码。你还在使用第三方服务软件吗?不如试试这个开发框架,助你一臂之力,无限制,无全开源,无版权约束,全是自主开发。开源框架包括服务器和客户端,支持mqtt3.0及5.0。可嵌入到自己的服务系统及软件客户端中,不受第三方约束。你要问我稳定性如何?我能回答的是已经......
  • 多卡并行训练框架(ddp) + 测评框架(支持多卡测评)
    一、多卡并行训练框架lightning-hydra-template这里主要使用github上开源框架lightning-hydra-template,但该框架存在一些小的问题,目前得到了解决。1.将github上lightning-hydra-template框架加入自己的仓库,然后从仓库中下载到服务器。2.修改src/utils/utils.py中的extras......
  • 设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean、注册表相
    现要对下面的配置文件进行解析,并自定义Spring框架的IOC对涉及到的对象进行管理。<?xmlversion="1.0"encoding="UTF-8"?><beans>  <beanid="userService"class="com.itheima.service.impl.UserServiceImpl">    <propertyname=&qu......
  • go web 框架
      在Go语言开发的Web框架中,有两款著名Web框架分别是Martini和Gin,两款Web框架相比较的话,Gin自己说它比Martini要强很多。Gin是Go语言写的一个web框架,它具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,非常好的支持中间件和json。总之在Go语言开发领域......
  • MyBatis 随笔
    MyBatis传参parameterTypeparameterType:接口中方法参数的类型,类型的完全限定名或别名如:parameterType="java.lang.Integer"parameterType="int"这个属性是可选的,因为可以推断出具体传入语句的参数,默认值为未设置(unset)。接口中方法的参数从java代码传入到mapper文件的......