当前位置: 首页 > news >正文

设计官网的深圳网站建设seo推广优化

设计官网的,深圳网站建设seo推广优化,最近重大新闻头条,wordpress增加阅读文章目录 Mybatis如何执行批量操作使用foreach标签 使用ExecutorType.BATCH如何获取生成的主键 Mybatis如何执行批量操作 使用foreach标签 foreach的主要用在构建in条件中#xff0c;它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有item#xff0c;index… 文章目录 Mybatis如何执行批量操作使用foreach标签 使用ExecutorType.BATCH如何获取生成的主键 Mybatis如何执行批量操作 使用foreach标签 foreach的主要用在构建in条件中它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有itemindexcollectionopenseparatorclose。 item  表示集合中每一个元素进行迭代时的别名随便起的变量名 index  指定一个名字用于表示在迭代过程中每次迭代到的位置不常用 open  表示该语句以什么开始常用“(” separator表示在每次进行迭代之间以什么符号作为分隔符常用“,” close 表示以什么结束常用“)”。 在使用foreach的时候最关键的也是最容易出错的就是collection属性该属性是必须指定的但是在不同情况下该属性的值是不一样的主要有一下3种情况 如果传入的是单参数且参数类型是一个List的时候collection属性值为list如果传入的是单参数且参数类型是一个array数组的时候collection的属性值为array如果传入的参数是多个的时候我们就需要把它们封装成一个Map了当然单参数也可以封装成map实际上如果你在传入参数的时候在MyBatis里面也是会把它封装成一个Map的map的key就是参数名所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key 具体用法如下 !-- 批量保存(foreach插入多条数据两种方法)int addEmpsBatch(Param(emps) ListEmployee emps); -- !-- MySQL下批量保存可以foreach遍历 mysql支持values(),(),()语法 -- //推荐使用 insert idaddEmpsBatchINSERT INTO emp(ename,gender,email,did)VALUESforeach collectionemps itememp separator,(#{emp.eName},#{emp.gender},#{emp.email},#{emp.dept.id})/foreach /insert !-- 这种方式需要数据库连接属性allowMutiQueriestrue的支持如jdbc.urljdbc:mysql://localhost:3306/mybatis?allowMultiQueriestrue -- insert idaddEmpsBatchforeach collectionemps itememp separator; INSERT INTO emp(ename,gender,email,did)VALUES(#{emp.eName},#{emp.gender},#{emp.email},#{emp.dept.id})/foreach /insert 使用ExecutorType.BATCH Mybatis内置的ExecutorType有3种默认为simple,该模式下它为每个语句的执行创建一个新的预处理语句单条提交sql而batch模式重复使用已经预处理的语句并且批量执行所有更新语句显然batch性能将更优 但batch模式也有自己的问题比如在Insert操作时在事务没有提交之前是没有办法获取到自增的id这在某型情形下是不符合业务要求的 具体用法如下 //批量保存方法测试 Test public void testBatch() throws IOException{SqlSessionFactory sqlSessionFactory getSqlSessionFactory();//可以执行批量操作的sqlSessionSqlSession openSession sqlSessionFactory.openSession(ExecutorType.BATCH);//批量保存执行前时间long start System.currentTimeMillis();try {EmployeeMapper mapper openSession.getMapper(EmployeeMapper.class);for (int i 0; i 1000; i) {mapper.addEmp(new Employee(UUID.randomUUID().toString().substring(0, 5), b, 1));}openSession.commit();long end System.currentTimeMillis();//批量保存执行后的时间System.out.println(执行时长 (end - start));//批量 预编译sql一次》设置参数》10000次》执行1次 677//非批量 预编译设置参数执行 》10000次 1121} finally {openSession.close();} } mapper和mapper.xml如下 public interface EmployeeMapper { //批量保存员工Long addEmp(Employee employee); }mapper namespacecom.jourwon.mapper.EmployeeMapper!--批量保存员工 --insert idaddEmpinsert into employee(lastName,email,gender)values(#{lastName},#{email},#{gender})/insert /mapper如何获取生成的主键 对于支持主键自增的数据库MySQL insert idinsertUser useGeneratedKeystrue keyPropertyuserId insert into user( user_name, user_password, create_time) values(#{userName}, #{userPassword} , #{createTime, jdbcType TIMESTAMP}) /insertparameterType 可以不写Mybatis可以推断出传入的数据类型。如果想要访问主键那么应当parameterType 应当是java实体或者Map。这样数据在插入之后 可以通过ava实体或者Map 来获取主键值。通过 getUserId获取主键 不支持主键自增的数据库Oracle 对于像Oracle这样的数据没有提供主键自增的功能而是使用序列的方式获取自增主键。 可以使用selectKey标签来获取主键的值这种方式不仅适用于不提供主键自增功能的数据库也适用于提供主键自增功能的数据库 selectKey一般的用法 selectKey keyColumnid resultTypelong keyPropertyid orderBEFORE /selectKey insert idinsertUser selectKey keyColumnid resultTypelong keyPropertyuserId orderBEFORESELECT USER_ID.nextval as id from dual /selectKey insert into user( user_id,user_name, user_password, create_time) values(#{userId},#{userName}, #{userPassword} , #{createTime, jdbcType TIMESTAMP}) /insert此时会将Oracle生成的主键值赋予userId变量。这个userId 就是USER对象的属性这样就可以将生成的主键值返回了。如果仅仅是在insert语句中使用但是不返回此时keyProperty“任意自定义变量名”resultType 可以不写。 Oracle 数据库中的值要设置为 BEFORE 这是因为 Oracle中需要先从序列获取值然后将值作为主键插入到数据库中。 扩展 如果Mysql 使用selectKey的方式获取主键需要注意下面两点 order AFTER 获取递增主键值 SELECT LAST_INSERT_ID() 当实体类中的属性名和表中的字段名不一样 怎么办 第1种 通过在查询的SQL语句中定义字段名的别名让字段名的别名和实体类的属性名一致。 select idgetOrder parameterTypeint resultTypecom.jourwon.pojo.Orderselect order_id id, order_no orderno ,order_price price form orders where order_id#{id}; /select第2种 通过resultMap来映射字段名和实体类属性名的一一对应的关系。 select idgetOrder parameterTypeint resultMaporderResultMapselect * from orders where order_id#{id} /selectresultMap typecom.jourwon.pojo.Order idorderResultMap!–用id属性来映射主键字段–id propertyid columnorder_id!–用result属性来映射非主键字段property为实体类属性名column为数据库表中的属性–result property orderno column order_no/result propertyprice columnorder_price / /reslutMap
http://www.dnsts.com.cn/news/47713.html

相关文章:

  • 提供域名申请的网站兰州专业网站建设公司
  • 北京西站地铁是几号线网站建设客户合同范本
  • 网站设计高端网站设计网站建设中的形象满意指的是销售
  • 做兼职网站赚钱吗南昌做网站哪家好
  • 如何建设一个视频网站网页视频在线提取
  • 网站的宣传推广建设专业网站电话咨询
  • python在线免费网站沧州seo
  • 网站 域名空间 调试app优化网站建设
  • 微网站建设套餐用rp怎么做网站功能按钮
  • 建设部城市管理监督局网站云浮正规网页设计培训
  • 本地电脑做视频网站 外网连接个人主页网站制作教程
  • 勐海县城乡建设局门户网站泉州企业建站系统
  • 怎样构建自己的网站域名备案要先做网站的吗
  • 淘宝客网站一定要备案建设一个网站需要多少时间
  • c h5网站开发京东网上商城购买
  • 建设部执业考试网站小程序哪家公司做的好
  • 宜春网站建设联系方式软件开发兼职平台
  • 有什么网站可以做运动外贸网站 域名后缀
  • 张家口建设厅官方网站wordpress培训班
  • 免费查权重工具seo平台是什么意思
  • 交易平台网站程序设备网站建设
  • 建站管理后台北京网站推广排名公司
  • 旅游网站开发需求分析学校网站维护怎么做
  • 可以进入的网站怎么查询网站域名
  • 网站开发要什么流程网页搜索关键词快捷键
  • 关于配色的网站推荐me域名公司网站
  • 温岭公司做网站icoc.cc是哪个网站域名
  • 连云港城乡建设局网站山西做网站推广
  • 做网站需要招聘内容可以下载的网站模板吗
  • 我想出租做房 请问哪个网站好些浪琴女士手表网站