黑马程序员mybatis教程第一天:删除用户和最后的总结
黑马程序员mybatis教程第二天延迟加载

延迟加载什么是延迟加载resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。
需求:如果查询订单并且关联查询用户信息。
如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。
把对用户信息的按需去查询就是延迟加载。
延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。
使用association实现延迟加载需求查询订单并且关联查询用户信息mapper.xml需要定义两个mapper的方法对应的statement。
1、只查询订单信息SELECT * FROM orders在查询订单的statement中使用association去延迟加载(执行)下边的satatement(关联查询用户信息)2、关联查询用户信息通过上边查询到的订单信息中user_id去关联查询用户信息使用UserMapper.xml中的findUserById上边先去执行findOrdersUserLazyLoading,当需要去查询用户的时候再去执行findUserById,通过resultMap的定义将延迟加载执行配置起来。
延迟加载resultMap使用association中的select指定延迟加载去执行的statement的id。
<!-- 延迟加载的resultMap --><resultMap type="cn.itcast.mybatis.po.Orders"id="OrdersUserLazyLoadingResultMap"><!--对订单信息进行映射配置 --><id column="id"property="id"/><result column="user_id"property="userId"/><result column="number"property="number"/><result column="createtime"property="createtime"/><result column="note"property="note"/><!-- 实现对用户信息进行延迟加载select:指定延迟加载需要执行的statement的id(是根据user_id查询用户信息的statement)要使用userMapper.xml中findUserById完成根据用户id(user_id)用户信息的查询,如果findUserById不在本mapper中需要前边加namespacecolumn:订单信息中关联用户信息查询的列,是user_id关联查询的sql理解为:SELECT orders.*,(SELECT username FROM USER WHERE er_id =user.id)username,(SELECT sex FROM USER WHERE er_id = user.id)sexFROM orders--><association property="user"javaType="er"select="erMapper.findUserById" column="user_id"><!-- 实现对用户信息进行延迟加载 --></association></resultMap>mapper.java测试测试思路:1、执行上边mapper方法(findOrdersUserLazyLoading),内部去调用cn.itcast.mybatis.mapper.OrdersMapperCustom中的findOrdersUserLazyLoading只查询orders信息(单表)。
mybatis removebymap 用法

mybatis removebymap 用法 MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程
以及高级映射。Removebymap是MyBatis提供的一种便捷方式,用于根据条件批量删除数据。下面将详细介绍MyBatisremovebymap的用法。 一、使用场景 在许多情况下,我们可能需要根据一些条件批量删除数据。传统的做法是通过编写SQL语句,然后在Java代码中执行这个SQL语句。但是,这种方式不够灵活,而且代码重复性高。MyBatis提供的removebymap方法,可以让我们通过配置文件来批量删除数据,更加方便快捷。 二、语法 其中,“删除方法名”是需要批量删除数据的方法名,“参数类型”是该方法的参数类型。 三、用法示例 假设我们有一个UserMapper接口,其中有一个删除用户的deleteUser方法: ```java publicinterfaceUserMapper{ intdeleteUser(intid); } ``` 我们可以使用removebymap方法来批量删除多个用户: ```xml > ``` 这个配置告诉MyBatis,我们要根据多个用户ID批量删除用户。当调用这个removebymap方法时,它会将用户ID数组作为参数传递给deleteUser方法,并批量删除匹配的用户。 四、注意事项 1.参数类型必须是数组或者集合类型,如array、list、set等。这是因为removebymap方法需要将这些参数传递给目标方法。 2.目标方法的参数类型必须与parameterType配置一致。如果不同,MyBatis将无法正确解析参数。 3.批量删除操作可能会影响数据库的性能,请谨慎使用。 4.在使用removebymap方法时,请确保目标方法的实现正确,并且能够正确处理传入的参数。 总之,MyBatisremovebymap方法提供了一种便捷的方式,可以根据条件批量删除数据。通过配置文件,我们可以轻松地实现这个功能,而不需要编写大量的SQL语句和Java代码。在使用时,请注意参数类型和配置的一致性,以及可能对数据库性能的影响。
黑马程序员_javaweb讲义和笔记资料

黑马程序员_javaweb讲义和笔记资料一、简介黑马程序员是一家专业的IT培训机构,提供全面的编程技术培训服务。
javaweb是其中的一门重要课程,本文为黑马程序员_javaweb讲义和笔记的资料整理。
二、javaweb基础知识1. Java语言概述Java语言的特点和优势,Java开发环境的搭建等。
2. Servlet技术Servlet的基本概念、生命周期、Servlet容器等。
3. JSP技术JSP的基本语法、JSP指令、JSP内置对象等。
4. MVC设计模式MVC设计模式在javaweb开发中的应用和实践。
三、javaweb开发流程1. 需求分析分析项目需求,明确开发目标和功能要求。
2. 数据库设计设计数据库表结构,确定数据存储方式和关系。
3. 技术选型根据项目需求和开发要求,选择合适的技术框架和工具。
4. 编码实现使用Java语言和相关技术进行编码实现。
5. 测试调试运行和调试项目,确保功能的正确性和稳定性。
6. 部署上线将项目部署到服务器上线,提供给用户访问和使用。
四、javaweb开发常用框架和工具1. Spring框架Spring框架的介绍和核心特性,以及在javaweb开发中的应用。
2. SpringMVC框架SpringMVC框架的详细讲解,包括请求映射、数据绑定、视图解析等。
3. MyBatis框架MyBatis框架的使用方法和技巧,以及与数据库的集成。
4. Maven工具Maven的基本使用和配置,常用插件介绍。
五、javaweb开发中的常见问题和解决方案1. 数据库连接异常分析数据库连接异常的原因和解决方法。
2. 页面跳转问题页面跳转的实现方式和常见错误排查。
3. 表单数据验证表单数据验证的常用技术和插件,提高数据输入的准确性和安全性。
4. 性能优化优化javaweb应用的性能,减少响应时间和资源占用。
六、实例项目提供一个实例项目,通过对该项目的讲解和分析,帮助学员理解和掌握javaweb开发的方法和技巧。
Mybatis批量删除数据操作方法

Mybatis批量删除数据操作⽅法MyBatis的作⽤我想不⽤多说,今天说说MyBatis中的批量删除操作。
废话不多说,先给⼤家⼀段代码⽚段!<delete id="deleteByStandardIds">delete from t_standard_catalog where standard_id in<foreach collection="array" item="standardId" open="(" close=")" separator=",">#{standardId,jdbcType=INTEGER}</foreach></delete>或者 <delete id="deleteByStandardIds" parameterType="java.util.List">delete from t_standard_catalog where standard_id in<foreach collection="list" item="standardId" open="(" close=")" separator=",">#{standardId,jdbcType=INTEGER}</foreach></delete>foreach元素的属性主要有 item,index,collection,open,separator,close。
item表⽰集合中每⼀个元素进⾏迭代时的别名. (直接找到对应的delList集合⾥⾯的所有元素,item="item"中的item(后⼀个)必须与#{item} 中的item⼀致)index指定⼀个名字,⽤于表⽰在迭代过程中,每次迭代到的位置.open表⽰该语句以什么开始,separator表⽰在每次进⾏迭代之间以什么符号作为分隔符.close表⽰以什么结束.以上所述是⼩编给⼤家介绍的Mybatis批量删除数据操作⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
mybatis xml update delete语句

mybatis xml update delete语句MyBatis是一种用于Java语言的持久化框架,通过XML配置文件进行SQL语句的编写。
其中,update和delete语句用于更新和删除数据库中的记录。
以下是MyBatis XML中编写update和delete语句的相关参考内容:1. Update语句:在MyBatis XML文件中,可以通过`<update>`标签来编写update语句。
以下是一个示例:```xml<update id="updateUser" parameterType="User">UPDATE userSET username = #{username}, password = #{password}WHERE id = #{id}</update>```- `<update>`标签用于定义一个update语句。
- `id`属性用于指定语句的唯一标识符。
- `parameterType`属性用于指定传入的参数类型,这里是User 类。
- `UPDATE user`部分指定要更新的表名为`user`,可以根据实际情况进行替换。
- `SET username = #{username}, password = #{password}`部分用于指定要更新的字段和字段值,通过`#{}`来引用参数值。
- `WHERE id = #{id}`部分用于指定要更新的记录的条件,通过`#{}`来引用参数值。
2. Delete语句:在MyBatis XML文件中,可以通过`<delete>`标签来编写delete语句。
以下是一个示例:```xml<delete id="deleteUser" parameterType="int">DELETE FROM userWHERE id = #{id}</delete>```- `<delete>`标签用于定义一个delete语句。
javamybatis remove的用法

javamybatis remove的用法Java MyBatis Remove的用法MyBatis是一种采用Java编写的持久层框架,对数据库的访问进行封装,使开发者可以更便捷地进行数据库操作。
在MyBatis中,remove方法用于删除数据库中的记录。
下面将详细讲解remove的用法。
前提条件在使用remove方法前,需要确保以下内容已经完成:1.已经配置好MyBatis的环境。
2.已经创建好数据库表,并映射为Java对象。
用法列表下面是remove方法的常见用法:1.删除单条记录。
2.删除多条记录。
3.删除指定条件的记录。
删除单条记录要删除单条记录,可以使用remove方法,并传入要删除记录的主键值。
SqlSession session = ();try {// 获取Mapper接口对象MyMapper mapper = ();// 删除ID为1的记录(1);// 提交事务();} finally {// 关闭SqlSession();}上述代码中,首先创建了一个SqlSession对象,用于执行数据库操作。
然后通过getMapper方法获取接口对象,使用该接口对象的remove方法删除了ID为1的记录。
最后提交事务并关闭SqlSession。
删除多条记录要删除多条记录,可以使用remove方法,并传入一个包含要删除记录主键值的集合。
SqlSession session = ();try {// 获取Mapper接口对象MyMapper mapper = ();// 创建要删除的主键集合List<Integer> ids = new ArrayList<>();(1);(2);(3);// 删除多条记录(ids);// 提交事务();} finally {// 关闭SqlSession();}上述代码中,首先创建了一个SqlSession对象。
然后通过getMapper方法获取接口对象,创建一个包含要删除记录主键值的集合。
MybatisPlus修改删除操作

MybatisPlus修改删除操作 2、⾃动填充项⽬中经常会遇到⼀些数据,每次都使⽤相同的⽅式填充,例如记录的创建时间,更新时间等。我们可以使⽤MyBatis Plus的⾃动填充功能,完成这些字段的赋值⼯作:1)数据库表中添加⾃动填充字段在User表中添加datetime类型的新的字段 create_time、update_time2)实体类上添加属性以及注解@Datapublic class User { ...
//注意使⽤⼩驼峰,框架会⾃动将下划线转为⼩驼峰 //设置⾃动填充时机 @TableField(fill = FieldFill.INSERT) private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;}
3)实现元对象处理器接⼝@Componentpublic class MyMetaObjectHandler implements MetaObjectHandler {
//使⽤mp实现添加的⾃动填充时,这个⽅法就会执⾏ @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); }
//使⽤mp实现更新的⾃动填充时,这个⽅法就会执⾏ @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime", new Date(), metaObject); }}
mybatis中trim用法

mybatis中trim用法MyBatis中trim的用法在MyBatis中,trim是一个非常有用的函数,它可以用来处理字符串前后的多余空格,并根据需要进行其他操作,如删除特定的前缀或后缀。
trim函数可以在MyBatis的SQL语句中任何需要的地方使用,常见的用法如下:1. 基本用法:trim函数可以用来删除字符串两端的空格,语法如下:```xml<trim prefix="prefixChars" suffix="suffixChars"prefixOverrides="prefixToRemove" suffixOverrides="suffixToRemove"> <!-- 需要处理的内容 --></trim>```- prefix:可选参数,用于在字符串前添加前缀。
示例:prefix="(",则字符串最终会以"("开头。
- suffix:可选参数,用于在字符串末尾添加后缀。
示例:suffix=")",则字符串最终会以")"结尾。
- prefixOverrides:可选参数,用于删除以指定字符串开头的内容。
示例:prefixOverrides="prefixToRemove",会删除字符串开头与prefixToRemove匹配的部分。
- suffixOverrides:可选参数,用于删除以指定字符串结尾的内容。
示例:suffixOverrides="suffixToRemove",会删除字符串末尾与suffixToRemove匹配的部分。
2. 嵌套使用:trim函数还支持嵌套使用,可以根据需要多次调用它来进行更复杂的字符串处理。
示例如下:```xml<trim prefix="prefixToAdd" suffix="suffixToAdd"prefixOverrides="prefixToRemove" suffixOverrides="suffixToRemove"><trim prefix="prefix2ToAdd" suffix="suffix2ToAdd"prefixOverrides="prefix2ToRemove" suffixOverrides="suffix2ToRemove"> <!-- 需要处理的内容 --></trim></trim>```这样可以根据需求进行多次修整,以达到更精确的字符串处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
删除用户映射文件
代码:
更新用户映射文件
代码
总结
parameterType
在映射文件中通过parameterType指定输入参数的类型。
resultType
在映射文件中通过resultType指定输出结果的类型。
#{}和${}
#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。
如果接收简单类型,#{}中可以写成value或其它名称。
#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。
${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。
${}接收输入参数,类型可以是简单类型,pojo、hashmap。
如果接收简单类型,${}中只能写成value。
${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。
selectOne和selectList
selectOne表示查询出一条记录进行映射。
如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。
selectList表示查询出一个列表(多条记录)进行映射。
如果使用selectList查询多条记录,不能使用selectOne。
如果使用selectOne报错:
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 4
mybatis和hibernate本质区别和应用场景
hibernate:是一个标准ORM框架(对象关系映射)。
入门门槛较高的,不需要程序写sql,sql语句自动生成了。
对sql语句进行优化、修改比较困难的。
应用场景:
适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa。
mybatis:专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。
mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis 也可以实现映射(输入映射、输出映射)。
应用场景:
适用与需求变化较多的项目,比如:互联网项目。
企业进行技术选型,以低成本高回报作为技术选型的原则,根据项目组的技术力量进行选择。