MyBatis

classpath路径

為{幸葍}努か 提交于 2020-02-26 08:34:37
只知道把配置文件如:mybatis.xml,spring-web.xml,applicationContext.xml等放到src目录(就是存放代码文件的目录),然后使用classpath:XXX.xml来读取,都放到src目录准没错,那么到底classpath到底指的什么位置呢? 1、src路径下的文件在编译后会放到WEB-INF/classes路径下。默认的classpath是在这里。直接放到WEB-INF下的话,是不在classpath下的。用ClassPathXmlApplicationContext当然获取不到 2、如果单元测试的话,可以在启动或者运行的选项里指定classpath的路径的 3、用maven构建项目适合resource目录就是默认的classpath classes目录 1、存放各种资源配置文件 2、存放模板文件 3、存放class文件,对应的是项目开发时的src目录编译文件 总结:这是一个定位资源的入口 补充:classpath与classpath*的区别 classpath:只会到你的class文件路径中查找文件 classpath*:不仅包含class路径,还包括jar文件中的class路径进行查找 注意:用classpath*需要遍历所有的classpath,所以加载速度是很慢的,因此,在规划的时候,应该尽可能规划好资源文件所在的路径

素小暖讲Spring JdbcTemplate

喜夏-厌秋 提交于 2020-02-26 07:36:24
昨天写了一篇 为什么很多人不愿意用hibernate了? 博客,与广大猿友探讨了一下hibernate的优劣及连接数据库的方法,回家研究了一下,发现Spring JdbcTemplate挺好用的,做了个总结,分享给大家。 声明:本文只是小编的一点拙见,不喜勿喷。 欲速则不达,欲达则欲速! 一、hibernate与Spring JdbcTemplate对比 hibernate批量处理海量数据从性能上考虑是不可取的,浪费了很大的内存。从它的机制上讲hibernate是先把符合条件的数据查询出来,放到内存中,然后再进行操作,一顿操作猛如虎,奈何性能不理想。 Spring JdbcTemplate和hibernate在处理简单查询操作时,效率基本相同,甚至hibernate的效率要略高一些。但是在执行批量操作,繁琐操作时,hibernate的效率能达到Spring JdbcTemplate的80%就不错了。但hibernate可以极大提高开发效率,像分页等较复杂的开发都是可以直接完成的,所以弥补了效率的不足。 追求执行效率用Spring JdbcTemplate,追求开发效率用hibernate,如果存在较多批量操作,建议使用spring JdbcTemplate。 二、Spring JdbcTemplate相对于hibernate优势所在

spring boot 2.x 集成 MyBatis

会有一股神秘感。 提交于 2020-02-26 07:32:44
1、添加 MyBatis 起步依赖 < dependency > < groupId > org . mybatis . spring . boot < / groupId > < artifactId > mybatis - spring - boot - starter < / artifactId > < version > 1.3 .2 < / version > < / dependency > 2、添加数据库 connector 依赖 < dependency > < groupId > mysql < / groupId > < artifactId > mysql - connector - java < / artifactId > < version > $ { mysql . version } < / version > < / dependency > 3、spring boot 主配置文件配置 # 数据源配置 # spring . datasource . driver - class - name = com . mysql . jdbc . Driver spring . datasource . url = jdbc : mysql : / / 127.0 .0 .1 : 3306 / bjpowernode spring . datasource

MyBaits系列-MyBatis源码之Executor(一)(5)

假如想象 提交于 2020-02-26 07:28:41
知识点 Myabtis有哪些Executor执行器,区别是什么? Mybatis如何配置使用哪种Executor? Mybatis如何实现批处理? Mybatis的主键策略,批量写入,能返回数据库主键么? Executor包的主要结构及其作用 Executor 接口及其实现类,使用场景及其调用 BaseExecutor BaseExecutor在创建的时候new了一个本地缓存,每次执行query的时候先从缓存中获取,如果缓存中没有,则从数据库中获取并放到缓存中。代码如下: public <e> List<e> query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql) throws SQLException { ErrorContext.instance().resource(ms.getResource()).activity("executing a query").object(ms.getId()); //如果已经关闭,报错 if (closed) { throw new ExecutorException("Executor was closed."); } //先清局部缓存

SpringBoot+Mybatis+Thymeleaf-Build Blog site_2

跟風遠走 提交于 2020-02-26 07:24:27
主要类容: 这一章记录Thymeleaf模板引擎技术,基本概念、属性和表达式语法并结合实际的代码页面功能开发的学习过程。 1、 认识Thymeleaf模板引擎。 2、 Springboot整合Thymeleaf 。 3、 Thymeleaf模板语法及前世今生。 4、 Thymeleaf模板标签属性。 5、 Thymeleaf模板引擎使用注意事项。 1-认识Thymeleaf模板引擎: (1)、T hymeleaf 应该是目前最廋欢迎的模板引擎技术了,Springboot官方也推荐Java web开发中使用该技术来代替jsp技术,主要是由于其“原型即页面”的理念与Springboot倡导的快速开发非常契合。同时Thymeleaf模板引擎也确实有其他技术不具备的优点。 (2) 、Thymeleaf 3 的核心特性 Thymeleaf与2016年5月正式发布了Thymeleaf-3.0.0RELEASE版本,目前的大部分项目开发过程中也使用的3.0及以上版本,因此本次记录的也是3.0。 ♬ 完整的HTML5标记支持,全新的解析器。 ♬ 自带多种模板模式,也只可以扩展支持其他的模板格式。 ♬ 在web和非web环境(离线)下也可以正常工作。 ♬ 对Spring web开发的支持非常完善。 ♬ 独立于Servlet API 。 ♬ 其他特性: Thymeleaf 3.0

MyBatis-一对多、多对一

岁酱吖の 提交于 2020-02-26 07:22:11
一对多和多对一,是一个相对的概念。 以老师和学生为例,最常见的情况就是:一个老师教授很多学生。站在学生的角度,是很多学生被一个老师教,即很多学生关联一个老师(多对一);站在老师的角度,是一个老师教授很多学生,即一个老师有多个学生(一对多)。 在MyBatis中,处理多对一的问题使用 association标签(关联);处理一对多的问题使用 collection标签(集合)。 多对一 按照查询嵌套处理 查询所有的学生信息。 根据查询出来的学生的tid,寻找对应的老师。 < select id = " getStudent " resultMap = " StudentTeacher " > select * from mybatis_test.student; </ select > < resultMap id = " StudentTeacher " type = " Student " > < result column = " id " property = " id " /> < result column = " name " property = " name " /> < association column = " tid " property = " teacher " javaType = " Teacher " select = " getTeacher "

MyBatis完全使用指南

 ̄綄美尐妖づ 提交于 2020-02-26 05:57:07
MyBatis完全使用指南 转 http://www.jianshu.com/p/1c7c7d1bba33 MyBatis MyBatis作为一个轻量的SQL映射框架,确实很简单,但是知识点挺多,实际使用中还是会有时想不起来某个标签该怎么写,所以整理了这篇文章,以备查询。由于MyBatis如此简单,使得这一篇文章基本把实际使用中常碰到的事情都涵盖了,包括: MyBatis中的一些概念 MyBatis包含的内容 SQL映射 动态SQL 一、 MyBatis中的一些概念 MyBatis的架构 1. MyBatis 是个什么东西 在使用MyBatis的项目里,日志中往往会出现很多拼接SQL语句的log,这其实说明了MyBatis底层还是使用JDBC来实现的。在JDBC的基础上,为了性能考虑,所有的语句都是基于 SqlSession 。顾名思义,维护这个类的实例其实就是维护了一个对于某个数据库的连接的会话,在这个会话里可以有缓存啊什么之类的。 2. mapper 接口是怎么映射成SQL语句的 目前多数开发者还是会使用XML来进行MyBatis的配置,包括MyBatis的核心配置和SQL映射配置。其实和注解一样,XML本身只不过是一个元数据的载体,最终起作用的还是MyBatis的核心类。其中有这样几个比较重要的: SqlSessionFactoryBuilder ,用来创建

spring boot+mybatis+shiro对url动态授权,同一账号登录,踢出最早登录(一)

二次信任 提交于 2020-02-26 05:18:20
老规矩开始之前的两问:干什么,为什么这么干 场景: 根本问题:任何多用户的系统都存在身份鉴权。简单来说,不同用户在同一个系统有不同的操作,那么系统必然要识别用户。 产生问题:身份识别之后,对于一个系统来说,就可以进行正常使用,但是这个时候任何人都可以获得系统的信息,这就产生了授权。 为什么使用shiro? shiro是一款专门用来身份识别与授权的框架 shiro能干什么? 进行身份识别和授权 开始: 1:pom.xml 引入相关包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.2.2</version> </dependency>

ssm框架搭建

人盡茶涼 提交于 2020-02-26 05:05:28
整体结构  基本的配置 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"> <modelVersion>4.0.0</modelVersion> <groupId>con.zf</groupId> <artifactId>ssm2</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>ssm2 Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <!-- <modules>--> <!-- <module>ssm_bean</module>--> <!-- <module>ssm

2020年,MyBatis常见面试题总结

空扰寡人 提交于 2020-02-26 04:49:49
Mybatis 技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用 Mybatis 的文章,所以,一些参数使用细节略掉了,我们的目标是介绍 Mybatis 的技术架构和重要组成部分,以及基本运行原理。 博客写的很辛苦,但是写出来却不一定好看,所谓开始很兴奋,过程很痛苦,结束很遗憾。要求不高,只要读者能从系列博客中,学习到一点其他博客所没有的技术点,作为作者,我就很欣慰了,我也读别人写的博客,通常对自己当前研究的技术,是很有帮助的。 尽管还有很多可写的内容,但是,我认为再写下去已经没有意义,任何其他小的功能点,都是在已经介绍的基本框架和基本原理下运行的,只有结束,才能有新的开始。写博客也积攒了一些经验,源码多了感觉就是复制黏贴,源码少了又觉得是空谈原理,将来再写博客,我希望是“精炼博文”,好读好懂美观读起来又不累,希望自己能再写一部开源分布式框架原理系列博客。 有胆就来,我出几道 Mybatis 面试题,看你能回答上来几道(都是我出的,可不是网上找的)。 1、#{}和${}的区别是什么? 注:这道题是面试官面试我同事的。 答: ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #