MyBatis

Mybatis(二) Mybatis通用的写法

落花浮王杯 提交于 2020-03-22 16:55:26
2.1 用来循环容器的标签forEach,查看例子   foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名, index:集合中元素迭代时的索引 open:常用语where语句中,表示以什么开始,比如以'('开始 separator:表示在每次进行迭代时的分隔符, close 常用语where语句中,表示以什么结束,   在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况: 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list . 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array . 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.   针对最后一条,我们来看一下官方说法: 注意 你可以将一个 List 实例或者数组作为参数对象传给

mybatis 添加自定义sql语句

只愿长相守 提交于 2020-03-22 15:52:44
3 月,跳不动了?>>> 我一般使用mybatis-plus,但是在维护旧代码的时候发现使用的是xml这样的mybatis, 需要使用动态的sql语句,所以要自定义sql语句 1.xml里面设置,resultMap是自己定义的类对象,也可以使用map <select id ="selectQuestionForDownload" resultMap ="getKnowledgeQuestionMap" parameterType ="java.lang.String" > ${_parameter} </select> 2.mapper设置 , 直接声明该接口即可 List<KnowledgeQuestion> selectQuestionForDownload (String sql) ; 3.调用的地方,自动驻入就不说明了,直接看调用的地方 StringBuilder builder = new StringBuilder() ; String start = "select * from question_gray where " ; builder.append(start) ; for (String str : params.keySet()){ if (Constants. QUESTION_PARAMS .containsKey(str)){ builder

文件上传和下载

梦想与她 提交于 2020-03-22 12:16:10
3 月,跳不动了?>>> 用于存储文件信息的表名 CREATE TABLE `visit_file` ( `id` varchar(32) COLLATE utf8_bin NOT NULL, `visit_id` varchar(32) COLLATE utf8_bin NOT NULL, `file_name` varchar(200) COLLATE utf8_bin NOT NULL, `file_new_name` varchar(200) COLLATE utf8_bin NOT NULL, `save_path` varchar(200) COLLATE utf8_bin NOT NULL, `file_suffix` varchar(10) COLLATE utf8_bin NOT NULL, `file_size` varchar(200) COLLATE utf8_bin NOT NULL, `fcd` date NOT NULL, `fcu` varchar(10) COLLATE utf8_bin NOT NULL, `lcd` date NOT NULL, `lcu` varchar(10) COLLATE utf8_bin NOT NULL, `is_del` varchar(2) COLLATE utf8_bin NOT NULL, PRIMARY

Spring源码---组合注解/合并注解的问题

时光毁灭记忆、已成空白 提交于 2020-03-21 15:32:12
3 月,跳不动了?>>> 我想,每个开发人员都应该有过这样的经历:在编写某个类或接口的时候,需要声明Spring本身的注解(@Controller、 @Service ,@Dao),又需要声明自己公司编写的注解来完成公司的独特业务,然后就悲剧了,一个类上边声明了五六个注解,茫茫然不知所云。注解本身是好的,它可以替我们完成一些事情。但和XML一样,过度使用就编程了一种灾难。 于是,一种新的替代方案出现了,那就是组合注解。比较经典的组合注解就是SpringBoot的@SpringBootApplication注解。我们看看它的源码: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Configuration @EnableAutoConfiguration @ComponentScan public @interface SpringBootApplication { Class<?>[] exclude() default {}; String[] excludeName() default {}; @AliasFor(annotation = ComponentScan.class, attribute = "basePackages") String[]

常见JavaWeb安全问题和解决方案

£可爱£侵袭症+ 提交于 2020-03-21 11:48:58
3 月,跳不动了?>>> 1、注入 SQL注入:程序向后台数据库传递SQL时,用户提交的数据直接拼接到SQL语句中并执行,从而导入SQL注入攻击。 字符型注入:黑色部分为拼接的问题参数 select * from t_user where name='test' or '1' = '1'; 数字型注入:黑色部分为拼接的问题参数(对于强类型语言,字符串转int类型会抛异常。所以这种注入方式一般出现在php等弱类型语言上。 select * from t_user where id=1;drop table t_userinfo; 搜索型注入:对表名进行猜测 select * from t_user where userName like ‘%test%' and 1=2 union select 1,2 from t_admin'; 修复方法: a、在mybatis中使用#把参数当做一个字符串,不能使用$符号 b、在JDBC中使用预编译的方式对参数进行绑定,详细如下: String userName = request.getParameter("userName"); String sql = "select * from t_user where userName = ?"; JdbcConnection conn = new JdbcConnection();

关于校招面试要怎么准备,这里有一些过来人的建议

余生长醉 提交于 2020-03-21 11:06:14
3 月,跳不动了?>>> 最近很多同学咨询关于校招准备的问题,沟通下来发现发现了很多共性的问题,因此,今天总结一下这些问题,为希望进入互联网研发岗位的同学提供一些参考建议。 1.专业有决定性影响吗? 答案是否定的。 最近几年经常负责面试社招和校招,校招也面试过很多非计算机专业的同学。实际上,能拿到offer的同学跟专业本身有一定关系(有什么关系后面会说),但没有决定性关系。尤其是校招和实习面试,不会对方向对口有特别严格的要求,这一点和社招是有巨大区别的。 校招面试更偏向于看重个人的综合能力。 所谓综合能力,一般 由 几个方面构成。 1)基础知识的扎实掌握 2)项目经验 3)自驱力 2.基础知识考察 基础知识的积累是一个长期的过程,但是面试跟考试一样,还是有重点和必考点的。 这里介绍一些常见的必考点(建议读者根据必考点自己梳理知识点,网上相关的面经太多了,就不展开罗列了) 1)编程语言 以Java为例 集合的使用与原理(set、list、map等) 多线程与并发编程(java内存模型、各种锁) JVM相关(各种GC算法、类加载机制) Java8特性 2)数据结构与算法 必考点。建议刷leetcode,做题型总结。 数组、链表、贪心、动态规划、dfs等等。 3)数据库知识 以MySQL数据库为例 存储结构(B+树) 索引(聚簇索引、非聚簇索引、覆盖索引等等) 事务(隔离级别、脏读幻读

java springmvc spring cloud spring boot b2b2c o2o 电子商城源码 分布式 微服务

一笑奈何 提交于 2020-03-21 10:14:06
3 月,跳不动了?>>> 核心架构:Spring Cloud、Spring Boot、Mybatis、Redis、vue、小程序、原生APP、前后端分离 核心思想:产品微服务、模块化、原子化、持续集成、分布式、集群部署 开发模式:代码生成工具、驱动式开发模式、提高开发效率 JDK:JDK 1.8+ 数据库:MYSQL 5.6+ 源码加求求:1038774626 来源: oschina 链接: https://my.oschina.net/u/3613013/blog/3207661

MyBatis的一对一关联关系映射

会有一股神秘感。 提交于 2020-03-21 09:29:39
原文链接:http://www.yiidian.com/mybatis/one-to-one.html 1 什么是一对一、一对多映射? 以用户和订单举例, 一对一 : 一个订单只属于一个用户 ==> 订单对用户是一对一关系 一对多 : 一个用户可以拥有多个订单 ==> 用户对订单是一对多关系 注意:在MyBatis中,如果要完成多对多关系,其实就是两个一对多映射! 接下来先讲解MyBatis的一对一映射如何实现。 2 建立表结构 2.1 创建用户表 CREATE TABLE `t_user` ( `id` int(11) DEFAULT NULL, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2.2 创建订单表 CREATE TABLE `t_order` ( `id` int(11) DEFAULT NULL, `orderno` varchar(100) DEFAULT NULL, `amount` double DEFAULT NULL, `user_id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2.3 插入测试数据 3

MyBatis的一对一关联关系映射

若如初见. 提交于 2020-03-21 08:24:24
3 月,跳不动了?>>> 原文链接: http://www.yiidian.com/mybatis/one-to-one.html 1 什么是一对一、一对多映射? 以用户和订单举例, 一对一 : 一个订单只属于一个用户 ==> 订单对用户是一对一关系 一对多 : 一个用户可以拥有多个订单 ==> 用户对订单是一对多关系 注意:在MyBatis中,如果要完成多对多关系,其实就是两个一对多映射! 接下来先讲解MyBatis的一对一映射如何实现。 2 建立表结构 2.1 创建用户表 CREATE TABLE `t_user` ( `id` int(11) DEFAULT NULL, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2.2 创建订单表 CREATE TABLE `t_order` ( `id` int(11) DEFAULT NULL, `orderno` varchar(100) DEFAULT NULL, `amount` double DEFAULT NULL, `user_id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2

Mybatis在insert时返回主键id

萝らか妹 提交于 2020-03-21 02:58:23
需要注意的地方: 1、添加记录能够返回主键的关键点在于需要在标签中添加以下三个属性。 useGeneratedKeys:必须设置为true,否则无法获取到主键id。 keyProperty:设置为POJO对象的主键id属性名称。 keyColumn:设置为数据库记录的主键id字段名称 2、新添加主键id并不是在执行添加操作时直接返回的,而是在执行添加操作之后将新添加记录的主键id字段设置为POJO对象的主键id属性 调用时: roomCheckInfoMapper.insertSelective(roomCheckInfo); int rciId = roomCheckInfo.getRciId(); System.out.println("插入返回的主键为"+roomCheckInfo.getRciId()); 来源: https://www.cnblogs.com/kkvt/p/12536300.html