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

懒人免费建站模板上海建设工程造价信息网官网

懒人免费建站模板,上海建设工程造价信息网官网,怎么做快法务类似网站,绍兴cms建站模板Mybatis的事务管理机制 在mybatis-config.xml文件中.可以进行mybatis的事务管理 transactionManager typeJDBC/ type的值有两个 JDBCMANAGED JDBC事务管理器 mybatis框架自己管理事务#xff0c;自己采用原生的JDBC代码去管理事务 底层创建的事务管…Mybatis的事务管理机制 在mybatis-config.xml文件中.可以进行mybatis的事务管理 transactionManager typeJDBC/ type的值有两个 JDBCMANAGED JDBC事务管理器 mybatis框架自己管理事务自己采用原生的JDBC代码去管理事务 底层创建的事务管理器对象是JdbcTransaction对象 conn.setAutoCommit(false);开启事务 进行业务处理 conn.commit()手动提交事务 SqlSession sqlSession sqlSessionFactory.openSession();//如果使用事务管理器是JDBC的话实际上会执行:conn.setAutoCommit(false) sqlSession.commit();//如果使用的事务管理器是JDBC的话实际上会执行:conn.commit() 不建议传入参数true SqlSession sqlSession sqlSessionFactory.openSession(true); 如果传入了参数true那么底层就不会执行conn.setAutoCommit(false)那么autoCommit就是true 如果autoCommit是true就表示没有开启事务只要执行一条sql语句就提交一次 MANAGED事务管理器 mybatis不再负责事务的管理事务管理交给其他容器来负责 当以后ssm框架进行集成的时候可以用MANAGED 但只有mybatis的框架时如果配置managed那么这块事务是没人管的表示事务没开启 Junit单元测试 先引入单元测试的依赖 然后在test包下创建类起名规范就是要测试的类加Test 测试方法要加注解Test说明这个方法是测试方法 单元测试中有两个重要的概念 实际值被测试的业务方法的真正的执行结果期望值执行了这个业务之后你期望的执行结果是多少 最后加断言进行测试 Assert.assertEquals(expected,actual) Mybatis的日志信息 Mybatis配置日志信息需要在核心配置文件中进行配置 Mybatis已经对STDOUT_LOGGING进行了实现只需要开启即可 但STDOUT_LOGGING的日志信息不够丰富如果想用丰富的要引入第三方组件 settings setting namelogImpl valueSTDOUT_LOGGING/ /settings 集成logback日志框架 引入logback的依赖引入logback所必须的xml配置文件 这个配置文件的名字必须叫做logback.xml或者logback-text.xml不能是其他的 这个配置文件必须放到根路径下不能是其他位置 ?xml version1.0 encodingUTF-8 ?configuration debugfalseappender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encoder/appenderlogger namecom.apache.ibaits levelTRACE/loggerlogger namejava.sql.Connection levelDEBUG/loggerlogger namejava.sql.Statement levelDEBUG/loggerlogger namejava.sql.PreparedStatement levelDEBUG/loggerroot levelDEBUGappend-ref refSTDOUT/append-refappend-ref refFILE/append-ref/root/configuration如果使用的是标准的日志需要配置settings如果使用的第三方组件就不用配置了 Mybatis封装工具类 //一个sqlSessionFactory对应一个environment一般一个environment对应一个数据库 //所以调用openSession的时候不用每次都创建sqlSessionFactory对象 //写在类加载器中即可public class MybatisUtil {private static SqlSessionFactory sqlSessionFactory;static {try {sqlSessionFactory new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(mybatis-config.xml));} catch (IOException e) {throw new RuntimeException(e);}}private MybatisUtil() {}public static SqlSession openSession() {return sqlSessionFactory.openSession();} }Mybatis的CRUD C:Create(增)R:Retrieve(查)U:update(改)D:delete(删) 在mybatis当中的占位符是#{} Map集合传值 #{}传入的值是map的键 MapString,Object map new HashMap();map.put(k1,1111);map.put(k2,比亚迪汉);map.put(k3,10.0);map.put(k4,2020-12-11);map.put(k5,电车);//第一个参数是sql语句的id//第二个参数是封装数据的对象sqlSession.insert(insertCar,map);insert into t_car(id,car_num,brand,guide_price,produce_time,car_type) values (null,#{k1},#{k2},#{k3},#{k4},#{k5}) POJO类传值 #{}传入的值是POJO类的属性值 SqlSession sqlSession SqlSessionUtils.openSession();Car car new Car(null, 1112, 凯的拉克CT6, 55.0, 2023-12-10, 电车);sqlSession.insert(insertCar,car);sqlSession.commit();sqlSession.close();insert into t_car(id,car_num,brand,guide_price,produce_time,car_type) values (null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})严格意义上来说如果使用POJO类传值的话#{}中实际上是mybatis调用get方法去掉get再把剩下的单词首字母小写 #{name}-#{getName} mybatis的删除 delete iddeleteCardelete from t_car where id#{id}/deletesqlSession.delete(deleteCar,15); Mybatis的更新 public void testUpdateCarById(){SqlSession sqlSession SqlSessionUtils.openSession();Car car new Car(5L,9999,凯美瑞,30.0,2023-12-10,燃油车);sqlSession.update(updateCar,car);sqlSession.commit();sqlSession.close();}update idupdateCarupdate t_car setcar_num#{carNum},brand#{brand},guide_price#{guidePrice},produce_time#{produceTime},car_type#{carType}whereid#{id}/update Mybatis的查询 mybatis中查询的时候mybatis底层执行了select语句之后就一定会返回一个结果集ResultSet 需要在select标签中指定resultType来确定ResultSet封装成什么类型的Java对象 Testpublic void testSelectCarById(){SqlSession sqlSession SqlSessionUtils.openSession();Object o sqlSession.selectOne(selectCar, 1);System.out.println(o);sqlSession.close();} }select idselectCar resultTypePOJO.Carselect *from t_carwhere id#{id}/select 查询时如果结果中的列名和封装对象中的属性名不对应那么就赋不上值 select idselectCar resultTypePOJO.Car select id,brand,car_num as carNum,guide_price as guidePrice,produce_time as produceTime,car_type as carType from t_car where id#{id} /select Mybatis查询所有 //resultType是封装的结果集类型不是指定List的类型是指定List集合中的元素类型 select idselectAll resultTypePOJO.Car select id,car_num as carNum, brand ,guide_price as guidePrice, produce_time as produceTime,car_type as carType from t_car /selectTestpublic void testSelectAll(){SqlSession sqlSession SqlSessionUtils.openSession();ListObject Cars sqlSession.selectList(selectAll);Cars.forEach(car- System.out.println(car));sqlSession.close();} Mybatis中的namespace 在sqlMapper.xml文件当中有namespace这个属性是用来指定命名空间的用来防止id重复 本质上mybatis的sql语句的写法是namespace.id为了防止id重复 Mybatis的核心配置文件 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configurationenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver valuecom.mysql.cj.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/mybatistest/property nameusername valueroot/property namepassword valueabc123//dataSource/environment/environmentsmappersmapper resourceCarMapping.xml//mappers /configuration environments是指mybatis的环境mybatis中可以有多个环境一个环境对应一个数据库 一个数据库对应一个SqlSessionFactory对象 default指的是默认使用的环境指定environment的id 当创建SqlSessionFactory的时候没有指定使用哪个环境就是用默认的环境 Mybatis的事务管理器 transactionManager是事务管理器指定mybatis具体用什么方式去管理事务 第一个JDBC使用原生的jdbc代码来管理事务第二个MANAGEDmybatis不再负责事务管理将事务管理交给其他的容器来管理 在Mybatis中提供了事务管理器接口Transaction 接口下有两个实现类JdbcTransactionManagedTransaction 如果typeJdbcTransaction 那么底层会实例化JdbcTransaction对象 如果typeManagedTransaction 那么底层会实例化ManagedTransaction对象 Mybatis的数据源 dataSource被称为数据源 dataSource为程序提供Connection对象但凡是给程序员提供Connection对象的都叫数据源 数据源实际上是一套规范JDK中有这套规范javax.sql.DataSource(这个数据源的规范这套接口实际上是JDK规范的) 我们自己也可以编写数据源组件只要实现javax.sql.DataSource接口就行了实现接口中的所有方法这样就有了自己的数据源 数据库连接池是提供连接对象的所以数据库连接池就是一个数据源组件 type属性是用来指定数据源的类型就是指定具体使用什么方法来获取Connection对象 type的属性值有三个 UNPOOLED不使用数据库连接池技术每一次请求过来之后都是创建新的Connection对象POOLED使用mybatis自己实现的数据库连接池JNDI集成其他第三方的数据库连接池 JNDI是一套规范大部分web容器都实现了JNDI规范 Mybatis的properties标签 java.util.Properties类是一个Map集合key和value都是String类 properties是为了让核心文件的配置更灵活 propety name属性名 value属性值 / properties resource配置文件名 /
http://www.zqtcl.cn/news/842131/

相关文章:

  • 建设部网站有建筑施工分包网站规划设计方案
  • 网站wap怎么做郑州做网站华久科技
  • 哪里网站开发好姜堰网站定制
  • 广东网站开发需要多少钱百度问答官网
  • 建设电影网站的关键wordpress简码怎么用
  • 做网站的linux程序代码北京公司减资流程
  • 四川省住房建设厅网站进不去wordpress 无限下拉菜单
  • 培训网站图片网络编程基础知识
  • 外销网站怎么做的上海住房与城乡建设部网站
  • 平台网站建设教程网站建设谈业务要知道什么
  • php网站开发试题济南网站排名公司
  • 没有官方网站怎么做seo优化营销推广平台都干什么的
  • 网盘搜索网站怎么做中国建设银行网站股份结构变化
  • 有ip怎么用自己的主机做网站惠州网站制作维护
  • 优质的网站制作在线编辑器
  • 盘锦做网站电话网络营销做私活网站
  • 有关网站建设的毕业设计外卖网站的建设与推广
  • cms 做网站用模板网站做h5宣传页多少钱
  • 坪山网站建设行业现状官方建网站有哪些步骤
  • 软件下载网站模版单页网站开发实例下载
  • 张家口网站建设vewanseo实战技术培训
  • 机加工网站室内设计联盟论坛
  • 汕头装修接单网站wordpress php加密
  • 重庆网站建设推广设置wordpress静态主页
  • 科技设计公司网站模板下载网站建设计划 文库
  • 建设美食网站做的好的阅读类的网站有哪些
  • 全屏网站模板制作教程吴江建设局房产网站
  • 浠水网站建设漳州找人做网站要求哪些
  • 做网站需要前台和后台吗公众号制作要求
  • 做一个网站 如何盈利模式招聘网站排行榜2021