MyBatis

mybatis 注解 批量更新

两盒软妹~` 提交于 2020-03-18 17:44:32
一、前端代码 toShare:function() { //判断选中状态 var ids =""; //判断选中状态 var num = 0; $(".checkbox").each(function () { if($(this).is(':checked')){ ids +=$(this).val() + ","; num++; } }); if(num <= 0){ toastr.error('请选择要共享的文件!'); return false; } ids = ids.slice(0,ids.length-1); //共享 $.ajax({ cache: false, type: "post", url:backbasePath+'/apia/v1/file/shareFile', dataType:'json', data:{ token:$("#token").val(), id:ids, }, async: true, success: function(data) { if('000000'==data.code){ toastr.success(data.msg); // 上传成功之后进行table的重新加载 $('#filesList').DataTable().ajax.reload(); // 设置不选中状态 $("#checkBoxMaster")

mybatis学习笔记(12)-多对多查询

痞子三分冷 提交于 2020-03-17 22:29:36
某厂面试归来,发现自己落伍了!>>> mybatis学习笔记(12)-多对多查询 标签: mybatis [TOC] 本文实现多对多查询,查询用户及用户购买商品信息。 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders、orderdetail、items sql SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.items_num, orderdetail.orders_id, items.name items_name, items.detail items_detail, items.price items_price FROM orders, user, orderdetail, items WHERE orders.user_id = user.id AND orderdetail.orders_id=orders.id AND orderdetail.items_id = items.id 映射思路 将用户信息映射到user中。 在user类中添加订单列表属性 List<Orders> orderslist

课时2:Spring整合MyBatis的几种方式 前面一个课时已经讲了一种思路了

匆匆过客 提交于 2020-03-17 19:19:30
.1)第二种方式 :就是省略掉第一种方式的实现类   1. 在在第一种方式的基础上改造     1.2 dao的实现类可以删除了     1.3 改造spring配置文件 <bean id="studentDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="net.bdqn.hbz.dao.IStudentMapper"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>     mapperInterface代表你要给哪个接口创建代理 sqlSessionFactory代表告知数据库配置信息 就是第一种方式注入的sqlSessionFactory .2)第三种方式:简化第二种方式 (也就是简化每创建一个接口都要写一次配置) 批量产生   1.在第二个基础上改造     1.1 改造spring配置文件 <bean id="mappers" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入SqlSessionFactory--> <property name=

MyBatis

主宰稳场 提交于 2020-03-17 13:02:08
MyBatis- 第一章 ORM(Object Relational Mapping) 设计模式,思想 对象关系映射,是一种数据持久化技术。它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据。 Object Relation Mapping 对象 关系 映射 Object: java的对象 Relation: 关系型数据库 初始MyBatis 具体实现 是一个优秀的数据持久化框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。其封装性要低于Hibernate,性能优秀,并且小巧、简单易学,现在应用也越来越广泛。 MyBatis环境部署 1.去官网下载相关的jar和配置 2.添加jar包 3.添加配置文件 入口配置文件 3.1 总配置文件 mybatis-config.xml (类似jdbc.properties) 配置和连接数据库的主要信息; 指定mapper文件 3.2 Mapper文件(一个dao对应一个mapper文件) 一个dao对应一个mapper文件,对应一个表 写操作数据库的sql语句的 4. service层 5. 测试类 一个插入例子 1. 创建一个示例表 BOOK 先使用teacher表 列名 类型 约束 备注 book_id number 序列自增 主键 book_name

mybatis是如何防止SQL注入的

坚强是说给别人听的谎言 提交于 2020-03-17 11:05:41
SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JAVA为例进行说明: 假设数据库中存在这样的表: table user( id varchar(20) PRIMARY KEY , name varchar(20) , age varchar(20) ); 然后使用JDBC操作表: private String getNameByUserId(String userId) { Connection conn = getConn();//获得连接 String sql = "select name from user where id=" + userId; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs=pstmt.executeUpdate(); ...... } 上面的代码经常被一些开发人员使用。想象这样的情况,当传入的userId参数为"3;drop table user;"时,执行的sql语句如下: select name from user where id=3; drop table user; 数据库在编译执行之后,删除了user表。瞧,一个简单的SQL注入攻击生效了!之所以这样

Mybatis源码学习:整体框架理解

做~自己de王妃 提交于 2020-03-17 10:41:35
某厂面试归来,发现自己落伍了!>>> 一、对源码先上一个结构图: 源代码主要在org.apache.ibatis目录下,18个包,其中在应用中主要的包有:builder、session、cache、type、transaction、datasource、jdbc、mapping,提供支撑服务的包有annotation、binding、io、logging、plugin、reflection、scripting、exception、executor、parsing 二、从使用入手 MyBatis使用的三板斧是SqlSessionFactoryBuilder和SqlSessionFactory、SqlSession SqlSessionFactoryBuilder 支持9种构造方法,其实最主要的是包含Configuration对象的构造方法,目的是为了通过加载配置文件创造SqlSessionFactory对象,真实最终返回的是DefaultSqlSessionFactory对象 所有的构造方法最终都是调用build(Configuratiron)方法,这就要来研究一下Configuration对象,其实他就是对xml配置文件的对象映射,关于xml文件结构组成可从源码中看出如下: 本文介绍一下Configuration的大框架,后续开个专辑专门研究Configuration的细节 ? 1

IDEA使用Mybatis插件 MyBatisCodeHelper-Pro

馋奶兔 提交于 2020-03-17 10:38:04
一、前言 在开发中编写生成bean,mapper,mapper.xml即费时也费力,可以通过MyBatisCodeHelper-Pro自动生成bean,dao,mapper.xml等文件,然后根据自己的需要进行修改。 MyBatisCodeHelper-Pro是IDEA下的一个插件,类似于mybatis plugin,但是是收费的,但可以进行破解: 转载出处:https://zhile.io/2019/04/23/mybatis-code-helper-pro-crack.html 二、安装插件MyBatisCodeHelper-Pro插件 下载MyBatisCodeHelper-Pro插件包到本地,在IDEA中安装此插件 重启IDEA即可,另外可以设置MyBatisCodeHelper-Pro插件属性 三、使用插件MyBatisCodeHelper-Pro插件 1.实体类自动生成建表语句 创建实体类Person package com.coody.mtdemo.entity; import java.util.Date; import lombok.Data; /** * @Classname Person * @Description TODO * @Author lw * @Date 2020-03-16 10:56 */ @Data public class Person

mybatis是如何防止SQL注入的

青春壹個敷衍的年華 提交于 2020-03-17 10:02:04
SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JAVA为例进行说明: 假设数据库中存在这样的表: table user( id varchar(20) PRIMARY KEY , name varchar(20) , age varchar(20) ); 然后使用JDBC操作表: private String getNameByUserId(String userId) { Connection conn = getConn();//获得连接 String sql = "select name from user where id=" + userId; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs=pstmt.executeUpdate(); ...... } 上面的代码经常被一些开发人员使用。想象这样的情况,当传入的userId参数为"3;drop table user;"时,执行的sql语句如下: select name from user where id=3; drop table user; 数据库在编译执行之后,删除了user表。瞧,一个简单的SQL注入攻击生效了!之所以这样

Mybatis中${}和#{}的区别

狂风中的少年 提交于 2020-03-17 07:27:53
${}和#{}的作用 Mybatis在项目中起到的是项目和数据库的交互以及sql语句的管理,sql语句的集中管理,方便开发人员对sql语句的复用和管理,但是既然需要复用,就表明sql语句本身是进过抽象的,抽象的目标就是参数,在不同的用途就需要传入不同的参数${}和#{}就是用来向已经定义好的sql语句传入参数的。 ${}和#{}的区别 #{} 这种取值是变异号sql语句之后再取值,添加的值有' '包裹 ${} 这种取值是取值之后再去编译sql语句,添加的值没有' '包裹 #{}的使用案例 <select id = "selectUser" parameterType="String" resultType="com.mybatis.po.MyUser"> select * from user where account = #{account} and password = #{password} </select> 上述sql语句经过编译之后的结果是 select * from user where account = '122221122' and password = '1515131811515' ${}的使用案例 <select id = "selectUser" parameterType="String" resultType="com.mybatis.po

SpringBoot整合Mybatis

Deadly 提交于 2020-03-17 03:42:21
springBoot作为现在的主流框架之一,将很多框架进行了融合,本编笔记记录的是mybatis的融合,SpringBoot+MyBatis融合有两种方式——原生xml方式和注解方式,,下面通过案例将两种方式都了解一下 。 。ps:我用的eclipse 创建好项目,首先导入jar包 < ! -- springBoot父依赖 -- > < parent > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - parent < / artifactId > < version > 2.2 .5 . RELEASE < / version > < relativePath / > < ! -- lookup parent from repository -- > < / parent > < dependencies > < ! -- 阿里数据连接池 -- > < dependency > < groupId > com . alibaba < / groupId > < artifactId > druid - spring - boot - starter < / artifactId > < version > 1.1 .10 < /