mapper

MyBatis-06-多对一

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-29 03:18:33
看完以下内容接着看: https://blog.csdn.net/lgz0921/article/details/104557260 目录结构: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>mybatis-study</artifactId> <groupId>org.kuang</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>mybatis-06</artifactId> <dependencies> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->

MyBatis常见面试问题

我是研究僧i 提交于 2020-02-28 22:31:15
一、 JDBC编程有哪些不足之处,Mybatis是如何解决这些问题的? 1) 数据库连接的创建、释放频繁造成系统资源浪费从而影响了性能,如果使用数据库连接池就可以解决这个问题。当然JDBC同样能够使用数据源。 解决:在xml中配置数据连接池,使用数据库连接池管理数据库连接。 2) SQL语句在写代码中不容易维护,事件需求中SQL变化的可能性很大,SQL变动需要改变JAVA代码。 解决:将SQL语句配置在mapper.xml文件中与java代码分离。 3) 向SQL语句传递参数麻烦,因为SQL语句的where条件不一定,可能多,也可能少,占位符需要和参数一一对应。 解决:Mybatis自动将java对象映射到sql语句。 4) 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。 解决:Mbatis自动将SQL执行结果映射到java对象。 二、 Mybatis编程步骤 ? Step1:创建SQLSessionFactory Step2:通过SQLSessionFactory创建SQLSession Step3:通过SQLSession执行数据库操作 Step4:调用session.commit()提交事物 Step5:调用session.close()关闭会话 三、 MyBatis与hibernate有哪些不同 ? 1

9.注解开发

狂风中的少年 提交于 2020-02-28 20:26:17
我们学到现在基本上都是基本面向接口编程 为什么? 为了解耦 在 UserMapper 中 @Select("select * from User")List<User> getUsers();//返回值是List<User> //User对象(这是我自己创建的一个类) 然后我们在 mybatis-config.xml 里绑定接口 <mappers> <mapper resource="com/zou/dao/UserMapper.xml"/></mappers> 然后我们编写测试类 public class UserMapperTest { //查询所有用户和密码 @Test public void test(){ SqlSession sqlSession = MybatisUtils.getSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> users = mapper.getUsers(); for(User user:users){ System.out.println(user); } sqlSession.close(); }} 来源: https://www.cnblogs.com/tuyaojiao/p/12378719.html

MyBatis在idea编译时找不到mapper.xml文件 java.io.IOException: Could not find resource cn/wbslz/mapper/***.xml

我怕爱的太早我们不能终老 提交于 2020-02-28 14:35:02
用Maven管理配置的项目 分为两种情况: 1). 如果mapper文件是放在java路径下,那么 原因是IDEA不会编译src的java目录下的xml文件 ,则可以在pom.xml文件中添加下面坐标: < build > < resources > < resource > < directory > src/main/java </ directory > < includes > < include > **/*.xml </ include > </ includes > </ resource > </ resources > </ build > 2). 若是mapper文件是在resource目录下,则用maven编译后查看目录 target/classes/ 下mapper.xml文件所在位置填写对应坐标即可。 如下图: 来源: CSDN 作者: 我不是靓仔ing 链接: https://blog.csdn.net/qq_38454176/article/details/104554188

idea自定义模版

左心房为你撑大大i 提交于 2020-02-28 13:34:59
点小灯 编辑live模版设置 模版全称 private static final Logger logger = LoggerFactory.getLogger($classname$.class); 输入log 你会看到第一个就是的 回车即可 该导入的包还是要手动导入的 还有一种就是 当我们使用xml时 都要手动去cv 也有这样的模版 <?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="#[[$namespace$]]#" > </mapper> 来源: https://www.cnblogs.com/my-ordinary/p/12376635.html

idea自定义模版

徘徊边缘 提交于 2020-02-28 13:33:43
点小灯 编辑live模版设置 模版全称 private static final Logger logger = LoggerFactory.getLogger($classname$.class); 输入log 你会看到第一个就是的 回车即可 该导入的包还是要手动导入的 还有一种就是 当我们使用xml时 都要手动去cv 也有这样的模版 <?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="#[[$namespace$]]#" > </mapper> 来源: https://www.cnblogs.com/my-ordinary/p/12376638.html

十四 MapReduce工作流程

孤街醉人 提交于 2020-02-28 05:35:50
文章目录 1 流程示意图 2 解析 1 流程示意图 2 解析 假如我们有一个文件ss.txt大小为200M的待处理文件,放在input目录下 客户端在submit job之前,获取待处理数据的信息, 然后根据参数配置, 形成一个任务分配的规划.把待处理的文件进行切片,200M大小的文件切成两个分区. ss . txt 0 - 128 M 第一个分区 ss . txt 128 - 200 M 第二个分区 客户端把切片信息还有需要的jar包和配置文件提交提交到Yarn 路径(如果是本地的话提交到本地路径) 如果是提交到yarn,yarn中的Mr appmaster 会获取信息,根据切片信息计算出MapTask的数量(一般是多少个切片多少个Task),创建MapTask分别处理一个切片. MapTask 中的InputFormat 中的RecorderReader会读取文件(按照配置的InputFormat的规则读,默认是TextInputFormat,按行读),获取k-v键值对. 读完的数据,会进入用户定义的Mapper中进行逻辑运算. Mapper 中处理完数据之后会把处理后的数据提交给outputCollector,然后outputCollector会把数据存储在 环形缓冲区 中. 环形缓冲区中左边存储元数据(数据信息),右边会存储数据(真正的k-v值),在写满环形缓冲区总容量

mybatis 动态SQL

吃可爱长大的小学妹 提交于 2020-02-28 02:15:32
动态SQL 官方文档 介绍 什么是动态SQL: 动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。 动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。 ------------------------------- - if - choose (when, otherwise) - trim (where, set) - foreach ------------------------------- ​ 我们之前写的 SQL 语句都比较简单,如果有比较复杂的业务,我们需要写复杂的 SQL 语句,往往需要拼接,而拼接

MyBatis:使用注解开发

杀马特。学长 韩版系。学妹 提交于 2020-02-28 02:07:51
面向接口编程 大家之前都学过面向对象编程,也学习过接口,但在真正的开发中,很多时候我们会选择面向接口编程 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好 在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了; 而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。 关于接口的理解 接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。 接口的本身反映了系统设计人员对系统的抽象理解。 接口应有两类: 第一类是对一个个体的抽象,它可对应为一个抽象体(abstract class); 第二类是对一个个体某一方面的抽象,即形成一个抽象面(interface); 一个体有可能有多个抽象面。抽象体与抽象面是有区别的。 三个面向区别 面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法 . 面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现 . 接口设计与非接口设计是针对复用技术而言的,与面向对象(过程

MyBatis:一对多、多对一处理

喜欢而已 提交于 2020-02-28 02:05:35
多对一的处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 数据库设计 CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师'); CREATE TABLE `student` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, `tid` INT(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '1'); INSERT INTO `student`