mybatis动态sql

Mybatis动态SQL之set标签

匿名 (未验证) 提交于 2019-12-03 00:25:02
ͬ where 标签功能类似, where 用去去除第一个条件中出现的 and 前缀,那么 set 标签就是去除最后一个更新字段语句中出现的 ,[逗号] 后缀。 XML映射文件中update部分: <!--set修改标签--> < update id = "updateUseSetTag" parameterType = "com.heiketu.testpackage.pojo.Product" > UPDATE Products < set > < if test = "vendId != null and vendId != ''" > vend_id = #{vendId}, </ if > < if test = "prodName != null and prodName != ''" > prod_name = #{prodName}, </ if > < if test = "prodDesc != null and prodDesc != ''" > prod_desc = #{prodDesc}, </ if > </ set > < where > prod_id = #{prodId} </ where > </ update > where 和 set 完全都可以被trim替换使用。如下代码: <!--set修改标签--> < update id =

myBatis - foreach动态sql

匿名 (未验证) 提交于 2019-12-03 00:18:01
forecah介绍 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的。 foreach属性 代码实践 数据表: 采用Oracle的HR.Employees表 Employees public class Employees { 映射文件: Mapper类: } 测试方法(未贴完整代码): 参考文档 https://blog.csdn.net/Small____Fish/article/details/8029030 https://blog.csdn.net/QH_JAVA/article/details/50754271 文章来源: myBatis - foreach动态sql

Hibernate&amp;MyBatis different

匿名 (未验证) 提交于 2019-12-03 00:14:01
一、框架介绍 二、框架使用 三、总结 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Hibernate的优点: 1、hibernate是全自动,hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。 2、功能强大,数据库无关性好,O/R映射能力强,需要写的代码很少,开发速度很快。 3、有更好的二级缓存机制,可以使用第三方缓存。 4、数据库移植性良好。 5、hibernate拥有完整的日志系统,hibernate日志系统非常健全,涉及广泛,包括sql记录、关系异常、优化警告、缓存提示、脏数据警告等 Hibernate的缺点: 1、学习门槛高,精通门槛更高,程序员如何设计O/R映射,在性能和对象模型之间如何取得平衡,以及怎样用好Hibernate方面需要的经验和能力都很强才行 2、hibernate的sql很多都是自动生成的,无法直接维护sql;虽然有hql查询,但功能还是不及sql强大,见到报表等变态需求时

以及Hibernate和Mybatis区别

匿名 (未验证) 提交于 2019-12-03 00:11:01
ORM框架? Object Relational Mapping,对象-关系映射。 项目中的业务实体有两种表现形式:对象和关系数据,即在内存中表现为对象,在数据库中表现为关系数据。 为什么需要ORM框架? ORM框架是对象关系映射,那为什么要映射mapping? 因为对象之间可以存在关联和继承关系,但是在数据库中,关系数据无法表达多对多关联和继承关系。(ps:在数据库原理中,会把逻辑上的多对多转换为多个一对关系才能实现)因此,对象和关系(业务实体的两种表现形式)想要映射正确,项目系统一般以中间件的形式,即持久层框架。 Hibernate? Hibernate是一个开源的对象关系映射框架。 它对jdbc进行了非常轻量级的对象封装,将pojo(普通的Java对象)与数据库表建立映射关系,是一个全自动的ORM框架,甚至自动生成SQL语句,自动执行。 因此,程序员可以随心所有地使用对象编程思维来操纵数据库。 Hibernate特点: Hibernate通过修改一个“持久化”对象的属性,从而修改数据库表中对应的记录数据 提供线程和进程两个级别的缓存提升应用程序性能 有丰富的映射方式将 Java对象之间的关系(POJO) 转换为 数据库表之间的关系 屏蔽不同数据库实现之间的差异。在Hibernate中只需通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句

mybatis动态sql以及分页

匿名 (未验证) 提交于 2019-12-03 00:11:01
1.mybatis动态sql <if test="bname != null" > #{bname,jdbcType=VARCHAR}, </if> <trim prefix="(" suffix=")" suffixOverrides="," > <if test="id != null" > id, </if> <if test="name != null" > name, </if> <if test="pwd != null" > pwd, </if> </trim> <select id="selectByIn" resultType="com.liuting.model.Book" parameterType="java.util.List"> select * from t_mvc_book where bid in <foreach collection="bookIds" open="(" close=")" separator="," item="bid"> #{bid} </foreach> </select> 测试: @Test public void slectByIn() { List list=new ArrayList(); list.add(2); list.add(5); list.add(19); list.add(27); List<Book

mybatis总结

匿名 (未验证) 提交于 2019-12-03 00:09:02
1.JDBC是怎么访问数据库的? 答:JDBC编程有6步,分别是1.加载sql驱动,2.使用DriverManager获取数据库连接,3.使用Connecttion来创建一个Statement对象 Statement对象用来执行SQL语句,4.执行SQL语句,5.操作结果集,6.回收数据库资源 2.MyBatis是怎么访问数据库的? 答:1导入架包; 2创建实体类对象; 3 创建mybatis的配置文件mybatis-config.xml; 4创建上面的TuserMapper.xml(Sql映射文件); 5 创建test类进行测试; 3.MyBatis和JDBC访问数据库有什么区别? 答:MyBatis具有以下一些特点:简单易用、性能高效、保留SQL、开源框架。 2可以自定义SQL、存储过程和高级映射的持久层框架 3. 优化获取和释放;SQL统一管理,对数据库进行存取操作;生成动态SQL语句;能够对结果集进行映射 总结: 一: 当dataSource的类型是POOLED时,还额外有以下常用属性。 poolMaximumActiveConnections,连接池最大活动连接数,默认值10 poolMaximumIdleConnections,连接池最大闲置连接数 poolMaximumCheckoutTime,连接“离开”连接池的最大时间,默认20秒 二:

Mybatis-动态sql和模糊查询

匿名 (未验证) 提交于 2019-12-02 23:57:01
sql片段,解决重复sql字段输入 where:添加where,去除第一个and set:添加set,去除第一个,号 <? xml version = "1.0" encoding = "UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:表示名称空间。现在的目的是区分id的. --> <mapper namespace = "com.zhiyou100.xf.dao.UsersDao" > <!-- 根据id查询用户。id:标识该标签。 parameterType:参数类型。可以写 也可以省略 resultType:返回结果的类型。 #{id}:类似于EL表达式。 解析id的值 --> <sql id = "content" > id,name,age,sex,address </sql> <select id = "selAll" resultType = "com.zhiyou100.xf.bean.Users" > select <include refid = "content" ></include> from users </select> <select

MyBatis、JDBC相关知识

匿名 (未验证) 提交于 2019-12-02 23:57:01
引言   在mybatis的基础知识中我们已经可以对mybatis的工作方式窥斑见豹。但是,为什么还要要学习mybatis的工作原理?因为,随着mybatis框架的不断发展,如今已经越来越趋于自动化,从代码生成,到基本使用,我们甚至不需要动手写一句SQL就可以完成一个简单应用的全部CRUD操作。从原生mybatis到mybatis-spring,到mybatis-plus再到mybatis-plus-spring-boot-starter。spring在发展,mybatis同样在随之发展。 什么是 Mybatis   Mybatis 本是 apache 的一个开源项目 iBatis , 2010 年这个项目由 apache software foundation 迁移到了 google code ,并且改名为 MyBatis 。   iBatis 一词来源于 "internet" 和 "abatis" 的组合,是一个基于 java 的持久层框架。 iBatis 提供的持久层框架包括 SQLMaps 和 Data Access Objects(DAO) 基本功能   Mybatis 是支持普通 SQL 查询,存储过程和高级映射的优秀 持久层框架 。 MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置 以及 结果集的检索 。 Mybatis 使用简单的 XML

spring获取mybatis语句

匿名 (未验证) 提交于 2019-12-02 23:36:01
切面类: import com.alibaba.fastjson.JSONObject; import com.tasu.server.utils.*; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.session.SqlSessionFactory; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; import org

面试官都会问的Mybatis面试题

匿名 (未验证) 提交于 2019-12-02 23:35:02
1、什么是Mybatis? 1、Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 2、MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 3、通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: 1、基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 2、与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; 3、很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 4