Mybatis
一蓑烟雨任平生2024
这个作者很懒,什么都没留下…
展开
-
Mybatis:case when then
https://www.cnblogs.com/blogxiao/p/7600964.htmlhttps://blog.csdn.net/libusi001/article/details/108044060原创 2021-07-25 19:07:59 · 2603 阅读 · 0 评论 -
mysql中的DATE_FORMAT(NOW(),‘%Y-%m-%d‘)函数
1.格式:DATE_FORMAT(date,format) 函数用于显示日期或时间数据的不同样式。1.1参数:date 合法的日期;format 最终输出的日期/时间;2.参考:DATE_FORMAT(NOW(),’%Y-%m-%d’) 格式转换SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') AS '日期'...原创 2021-06-04 08:06:43 · 4300 阅读 · 0 评论 -
Mybatis的延迟加载
延迟加载延迟加载是结合关联查询进行应用的。也就是说,只在<association>和<collection>标签上起作用对于关联查询,若不采用延迟加载策略,而是一次性将关联的从信息都查询出来,则在主信息比较多的情况下,会产生N+1问题,导致性能降低。比如用户信息和订单信息是一对多的关系,在查询用户信息时,设置了关联查询订单信息,如不采用延迟加载策略,假设共有100个用户,则我们查这100个用户的基本信息只需要一次SQL查询select * from user;若.转载 2021-05-28 08:07:58 · 562 阅读 · 0 评论 -
Mybatis批量插入怎么写?
Mybatis如何执行批量操作使用foreach标签foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有item,index,collection,open,separator,close。item 表示集合中每一个元素进行迭代时的别名,随便起的变量名; index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置,不常用; open 表示该语句以什么开始,常用“(”; separator表示在每次进行迭代之间以什么符号作原创 2021-05-19 17:24:01 · 466 阅读 · 0 评论 -
Mybatis的模糊查询like语句该怎么写?
(1)’%${question}%’ 可能引起SQL注入,不推荐(2)"%"#{question}"%" 注意:因为#{…}解析成sql语句时候,会在变量外侧自动加单引号’ ',所以这里 % 需要使用双引号" ",不能使用单引号 ’ ',不然会查不到任何结果。(3)CONCAT(’%’,#{question},’%’) 使用CONCAT()函数,推荐(4)使用bind标签<select id="listUserLikeUsername" resultType="com.jourwon原创 2021-05-19 17:02:21 · 1758 阅读 · 0 评论 -
@Mapper、@MapperScan和@ComponentScan的区别
@ComponentScan是组件扫描注解,用来扫描@Controller @Service @Repository这类 @MapperScan 是扫描mapper类的注解,在需要扫描的mapper类上加@Mapper注:@Repository为spring包下的,@MapperScan为ibatis包下的,如果使用mybatis,建议使用@Mapper首先,@ComponentScan是组件扫描注解,用来扫描@Controller @Service @Repository这类,主要就是定义...转载 2021-04-29 08:38:51 · 1800 阅读 · 0 评论 -
mybatis的association以及collection的用法
https://www.jianshu.com/p/018c0f083501转载 2021-03-21 15:47:41 · 168 阅读 · 0 评论 -
Mybatis RowBounds 分页原理
在 mybatis 中,使用 RowBounds 进行分页,非常方便,不需要在 sql 语句中写 limit,即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的,所以在数据量大的sql中并不适用,它更适合在返回数据结果较少的查询中使用最核心的是在 mapper 接口层,传参时传入RowBounds(int offset, int limit)对象,即可完成分页注意:由于 java 允许的最大整数为 2147483647,所以 limit 能使用的最大整数也是214748...转载 2020-10-20 20:00:23 · 1695 阅读 · 1 评论 -
Mybatis的模糊查询
/** * 根据名称模糊查询用户信息 * @param username * @return */ List<User> findByName(String username); /** * 测试模糊查询操作 */ @Test public void testFindByName(){ //5.执行模糊查询方法 /*select * from user...原创 2020-10-18 10:38:45 · 255 阅读 · 0 评论 -
Spring MVC+Spring+Mybatis实现支付宝支付和微信支付功能(图文详解+完整代码)
前言本教程详细介绍了如何使用ssm框架实现支付宝支付功能。本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释,自己实践的时候一定仔细阅读相关文档,话不多说我们开始。支付宝测试环境代码测试源代码https://github.com/OUYANGSIHAI/sihai-maven-ssm-alipay1.下载电脑网站的官方demo:下载:https://docs.open.alipay.com/270/106291/2.下转载 2020-08-25 20:33:40 · 1222 阅读 · 0 评论 -
Mybatis-映射
#{}和${}的区别 #{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。 Mybatis在处理#{}时,#{}传入参数是以字符串传入,会将SQL中的#{}替换为?号,调用PreparedStatement的set方法来赋值。 Mybatis在处理时,是原值传入,就是把{}时,是原值传入,就是把时,是原值传入,就是把{}替换成变量的值,相当于JDBC中的Statement编译 变量替换后,#{} 对应的变量自动加上单引号 ‘’;变量替换后,${} 对应转载 2020-08-15 10:15:36 · 697 阅读 · 0 评论 -
Spring、SpringMVC、Mybatis常见面试题总结
Spring篇spring是什么?Spring 是分层的 Java SE/EE 应用full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。优势...转载 2020-07-30 16:31:46 · 2042 阅读 · 0 评论 -
Spring+SpringMVC+Mybatis 学习笔记
springSpring学习01:控制反转(IOC)与依赖注入(DI)Spring学习02:面向切面编程(AOP)Spring学习03:数据库操作模板JdbcTemplateSpring学习04:事务控制(TransactionManager)MybatisMybatis学习01:Mybatis入门案例及工作原理分析Mybatis学习02:使用xml进行Mybatis开发Mybatis学习03:多表查询和延迟加载Mybatis学习05:Mybatis逆向工程Sprin转载 2020-07-18 18:54:18 · 329 阅读 · 0 评论 -
Mybatis入门(基于xml的查询所有测试)
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。...原创 2020-05-28 15:55:25 · 353 阅读 · 0 评论 -
Mybatis入门(基于注解的查询所有测试)
删除IUserDao.xml映射文件在IUserDao接口中的查询所有方法上加入注解package com.itheima.dao;import com.itheima.domain.User;import org.apache.ibatis.annotations.Select;import java.util.List;/** * @author 黑马程序员 * @Company http://www.ithiema.com * * 用户的持久层接口 */public i.原创 2020-05-28 16:11:33 · 463 阅读 · 0 评论 -
Mybatis_CRUD(基于xml的增删改查操作)
daoIUserDaopackage com.itheima.dao;import com.itheima.domain.QueryVo;import com.itheima.domain.User;import java.util.List;/** * @author 黑马程序员 * @Company http://www.ithiema.com * * 用户的持久层接口 */public interface IUserDao { /** * 查询所有操作原创 2020-05-29 10:06:40 · 235 阅读 · 0 评论 -
Mybatis_CRUD(属性名和列名不对应;properties、typeAliases和package标签)
般来说,数据库中的列名和java实体类中的属性名称是不同的,所以resultMap是用来对列名转换才能映射到java实体类,解决的方法有两种,这里用resultMap修改对应的关系之后,然后用这个结果集来封装返回的数据要将原来的resultType=“com.itheima.domain.User” 通通替换成resultMap=“userMap”还有一种效率更高的方法 就是给sql语句改别名 缺点就是 每条sql语句要修改的地方很多不方便例如:select id as userId,usernam原创 2020-05-29 10:43:20 · 132 阅读 · 0 评论 -
Mybatis 连接池POOLED
1、连接池: 我们在实际开发中都会使用连接池。 因为它可以减少我们获取连接所消耗的时间。2、mybatis中的连接池在 Mybatis 中也有连接池技术,但是它采用的是自己的连接池技术。在 Mybatis 的 SqlMapConfig.xml 配置文件中,通过<dataSource type=”pooled”>来实 现 Mybatis 中连接池的配置。 mybatis连接池提供了3种方式的配置: 配置的位置: 主配置文件Sql...原创 2020-05-29 19:21:57 · 3381 阅读 · 0 评论 -
Mybatis的事务提交方式
Mybatis 框架因为是对 JDBC 的封装,所以 Mybatis 框架的事务控制方式,本身也是用 JDBC 的 setAutoCommit()方法来设置事务提交方式的。这是我们的 Connection 的整个变化过程,通过分析我们能够发现之前的 CUD 操作过程中,我们都要手动进 行事务的提交(session.commit()),原因是 setAutoCommit()方法,在执行时它的值被设置为 false 了,所以我们在 CUD 操作中, 必须通过 sqlSession.commit.原创 2020-05-29 19:35:39 · 1998 阅读 · 0 评论 -
Mybatis_if标签的使用
我们根据实体类的不同取值,使用不同的 SQL 语句来进行查询。比如在 id 如果不为空时可以根据 id 查询, 如果 username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。 持久层Dao映射配置 <select id="findUserByCondition" resultMap="userMap" parameterType="user"> select * from user <wh..原创 2020-05-29 20:01:56 · 1183 阅读 · 0 评论 -
Mybatis_动态SQL foreach标签
传入多个 id 查询用户信息,用下边两个 sql 实现: SELECT * FROM USERS WHERE username LIKE '%张%' AND (id =10 OR id =89 OR id=16) SELECT * FROM USERS WHERE username LIKE '%张%' AND id IN (10,89,16) 这样我们在进行范围查询时,就要将一个集合中的值,作为参数动态添加进来。 这样我们将如何进行参数的传递? 在 QueryVo 中加入一个 L.原创 2020-05-29 20:19:23 · 414 阅读 · 0 评论 -
Mybatis_一对一
import com.itheima.domain.AccountUser;import java.util.List;/** * @author 黑马程序员 * @Company http://www.ithiema.com */public interface IAccountDao { /** * 方法二:查询所有账户,同时还要获取到当前账户的所属用户信息, * 注意:第二种方式,将返回值改 为了 Account 类型。 * 因为 Accoun.原创 2020-05-30 13:34:14 · 174 阅读 · 0 评论 -
Mybatis_一对多
package com.itheima.dao;import com.itheima.domain.User;import java.util.List;/** * @author 黑马程序员 * @Company http://www.ithiema.com * * 用户的持久层接口 */public interface IUserDao { /** * 查询所有用户,同时获取到用户下所有角色身份的信息 * @return */ L.原创 2020-05-30 13:44:19 · 309 阅读 · 0 评论 -
Mybatis_多对多
package com.itheima.dao;import com.itheima.domain.Role;import java.util.List;/** * @author 黑马程序员 * @Company http://www.ithiema.com */public interface IRoleDao { /** * 查询多对多 : 获取角色下 有几人及其信息 * @return */ List<Role> f..原创 2020-05-30 14:00:22 · 3492 阅读 · 0 评论 -
Mybatis——延迟加载
延迟加载: 就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。延迟加载也称懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速 度要快。 坏处: 因为只有当需要用到数据时,才会进行数据库查询,这样在大批量数据查询时,因为查询工作也要消耗 时间,所以可能造成用户等待时间变长,造成用户体验下降。 1、Mybatis中的延迟加载 问题:在一对多中,当我们有一个用户,它有100个账户。 在查...原创 2020-05-30 15:26:35 · 491 阅读 · 0 评论 -
Mybatis_缓存
Mybatis中的一级缓存和二级缓存 一级缓存: 它指的是Mybatis中SqlSession对象的缓存。 当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。 该区域的结构是一个Map。当我们再次查询同样的数据,mybatis会先去sqlsession中 查询是否有,有的话直接拿出来用。 当SqlSession对象消失时,mybatis的一...原创 2020-05-30 16:46:00 · 140 阅读 · 0 评论 -
Mybatis——基于注解的CRUD
注意:使用了注解,Resource下的com.itheima.dao 不能存在IUserDao.xml 否则报错!!!二者不能共存。IUserDaopackage com.itheima.dao;import com.itheima.domain.QueryVo;import com.itheima.domain.User;import org.apache.ibatis.annotations.*;import java.util.List;/** * @author...原创 2020-05-30 21:31:06 · 265 阅读 · 0 评论 -
Mybatis——基于注解的CRUD(实体类属性名与数据库列名不一致;基于注解的延迟加载)
domain Accountpackage com.itheima.domain;import java.io.Serializable;import java.util.Date;import java.util.List;/** * 实体类 * 注意:该类的属性名与数据库中列名不一致 */public class User implements Serializable{ private Integer userId; private String userN原创 2020-05-30 21:43:50 · 272 阅读 · 0 评论 -
Mybatis—— 使用注解实现一对一复杂关系映射及延迟加载
@Results 注解 代替的是标签<resultMap> 该注解中可以使用单个@Result 注解,也可以使用@Result 集合 @Results({@Result(),@Result()})或@Results(@Result()) @Resutl 注解 代替了 <id>标签和<result>标签 @Result 中 属性介绍: id 是否是主键字段 column 数据库的列名 property 需要装配的属性名 one 需要使原创 2020-05-30 21:53:37 · 288 阅读 · 0 评论 -
Mybatis——使用注解实现一对多复杂关系映射及延迟加载
IUserDaopackage com.itheima.dao;import com.itheima.domain.User;import org.apache.ibatis.annotations.*;import org.apache.ibatis.mapping.FetchType;import java.util.List;/** * @author 黑马程序员 * @Company http://www.ithiema.com * 在mybatis中针对,CRUD一..原创 2020-05-30 22:04:51 · 308 阅读 · 0 评论 -
Mybatis ——基于注解的二级缓存
@CacheNamespace(blocking = true)//开启二级缓存 相当于在xml中写</cache> useCache="truepackage com.itheima.test;import com.itheima.dao.IUserDao;import com.itheima.domain.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlS...原创 2020-05-30 22:08:31 · 339 阅读 · 0 评论 -
Mybatis——choose标签
Mybatis没有else标签,但是可以用 when otherwise<?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"> <mapper namespace="com.how2java.pojo">原创 2020-05-31 08:15:42 · 252 阅读 · 0 评论 -
Mybatis——bind标签
bind标签就像是再做一次字符串拼接,方便后续使用bind取代模糊查询的好处是提高了代码的可移植性。 在进行模糊查询时,如果是MySQL数据库,常常用到的是一个concat,它用'%'和参数相连。然而在Oracle数据库则没有,Oracle数据库用连接符号”||“。 当我们有了bind元素,就不必使用数据库语言,而是使用MyBatis的动态SQL即可完成。所以无论是MySQL还是Oracle都可以使用这样的语句,从而提高了代码的可移植性。<?xml version="1.0" e..原创 2020-05-31 08:28:55 · 2742 阅读 · 0 评论 -
#{}和${}的区别是什么?
${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #{}是 sql 的参数占位符,Mybatis 会将 sql 中的#{}替换为?号,在 sql 执行前会使用 PreparedStatement 的参数设置方法,按序给 sql 的?号占位符设置参数值,比如 ps.setInt(0, parameterValue),#{item.name}的取值方式为使用反射从...原创 2020-06-27 09:09:18 · 2728 阅读 · 0 评论