mybatis(二):缘由】的更多相关文章

一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper…
一.动态sql 通过mybatis提供的标签,实现sql语句的拼接. 1.where <select id="findUserList" parameterType="user" resultType="user"> select * from user <!--使用where可以自动处理第一个and--> <where> <if test="id!=null and id!=''"&…
根据下图myBatis的架构,创建一个使用MyBatis的工程.       一.配置MyBatis 环境(如图) 1.sqlMapConfig.xml 首先,导入jar包(上图右边)并加载路径,然后在目录下创建一个xml文件 sqlMapConfig.xml , 并添加以下配置代码, 这就是上图架构中的第一步配置mybatis环境, <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configur…
这节来说说全局配置文件的东西,非常简单.看一遍就懂了. --WH 一.全部配置内容 SqlMapConfig.xml的配置内容和顺序如下,顺序不能乱.现在来对这些属性的意思一一进行讲解. 二.properties 作用:引用java属性文件中的配置信息,比如,加载连接数据库的各种属性的配置文件. db.properties <!-- properties:引用java属性文件中的配置信息 比如加载连接数据库的帐号密码等信息的properties配置文件. 使用${}可以引用已经加载的java配置…
1.输入映射和输出映射 a)        输入参数映射 b)        返回值映射 2.动态sql a)        If标签 b)        Where标签 c)        Sql片段 d)        Foreach标签 3.关联查询 a)        一对一关联 b)        一对多关联 4.Mybatis整合spring a)        如何整合spring b)        使用原始的方式开发dao c)        使用Mapper接口动态代理 5.…
.单个参数 mybatis不会做特殊处理. #{参数名/任意名}:取出参数值. .多个参数 mybatis会做特殊处理. 多个参数会被封装成 一个map. key:param1...paramN,或者参数的索引也可以. value:传入的参数值. #{}就是从map中获取指定的key的值: 多个参数传递的时候要使用命名参数的形式: .命名参数:明确指定封装参数时map的key:@Param("id") 多个参数会被封装成 一个map, key:使用@Param注解指定的值 value:…
MybatisUtil工具类 在实际开发中,我们可以编写一个MybatisUtil辅助类来进行对进行操作. 1)在静态初始化块中加载mybatis配置文件和StudentMapper.xml文件一次 2)使用ThreadLocal对象让当前线程与SqlSession对象绑定在一起 3)获取当前线程中的SqlSession对象,如果没有的话,从SqlSessionFactory对象中获取SqlSession对象 4)获取当前线程中的SqlSession对象,再将其关闭,释放其占用的资源 /** *…
从别人说的方案中看出,传递参数方案还挺多,不如自己整理下,以便以后使用过程中有个笔记回忆录. 1.传递一个参数的用法: 配置文件 <select id="getById" resultType="TaskAutoExecutePlan" resultMap="TaskAutoExecutePlanResult" parameterType="java.lang.String"> select * from Task…
上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置mybatis.关于mybatis的一些基础知识小伙伴们可以参考这篇博客初识mybatis.另外,上篇博客中,小伙伴们也看到了通过添加jar包的方式来搭建mybatis环境太过于麻烦,so,本文我们还是回归到Maven上吧.OK,废话不多说,开始今天的coding之旅吧. 创建Project并添加Mav…
一级缓存和二级缓存 mybatis一二级缓存测试实例: package com.atguigu.mybatis.test; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import o…
第一种: <!-- 配置sqlsession --> <bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation"…
1. 输入映射(就是映射文件中可以传入哪些参数类型) 1)基本类型 2)pojo类型 3)Vo类型2. 输出映射(返回的结果集可以有哪些类型) 1)基本类型 2)pojo类型 3)List类型3. 动态sql:动态的拼接sql语句,因为sql中where条件有可能多也有可能少 1)where:可以自动添加where关键字,还可以去掉第一个条件的and关键字 2)if:判断传入的参数是否为空 3)foreach:循环遍历传入的集合参数 4)sql:封装查询条件,以达到重用的目的 4. 对单个对象的…
Mybatis 解决 jdbc 编程的问题 1. 数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接. 2. Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变Java代码. 解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离. 3. 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少…
1. 一对一映射 例子表: 学生表 地址表 POJO类 public class Address { private Integer addrId; private String street; private String city; private String state; private String zip; private String country; // setters & getters } public class Student { private Integer stu…
上一次讲的是利用mybatis提供的sqlSessionTemplate作为DAO进行数据库的操作,其实我们可以把它封装到我们自己的DAO里面,这样就是所谓的自己写DAO,这次我们写一下通过mybatis提供的mapper扫描自动生成Dao类. 修改的只是和mybatis相关的配置文件,请求控制的文件并不需要修改.修改后如下: 注意:mapper文件里面的namespace要和Dao接口的全限定名一样,方法对应mapper文件里面的id 后面在Service使用的时候直接使用接口就行了…
MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 95%的代码量.MyBatis 的构建就是聚焦于 SQL 的,使其远离于普通的方式. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 配置给定命名空间的缓存. cache-ref – 从其他命名空间引用缓存配置. resultMap – 最复杂,也是最有力量的元…
1.配置tomcat数据源: #   数据源基本配置spring.datasource.url=jdbc:mysql://localhost:3306/shoptest?useUnicode=true&characterEncoding=UTF-8spring.datasource.username=rootspring.datasource.password=root#spring.datasource.driver-class-name=com.mysql.jdbc.Driver#最大等待连…
目录 传统代码操作数据库的存在的问题 mybatis 的解决之道 传统代码操作数据库的存在的问题 数据库连接,在使用数据库时,创建数据库连接,在不用的时候,就会立即释放掉连接:这样当下次使用的又会创建数据库连接,对数据库进行频繁开启和关闭连接,造成数据库资源的浪费,影响数据库性能 : 将 sql 代码 硬编码 到 java 代码中了,导致如果 sql 代码发生变化,就需要 重新编译 java 代码: 在 PreparedStatement 对象中设置参数时,同样使用了 硬编码: 从 result…
SQL映射文件 单条件查询 1. 在UserMapper接口添加抽象方法 //根据用户名模糊查询 List<User> getUserListByName(); 2. 在UserMapper.xml里添加SQL <!--根据用户名模糊查询--> <select id="getUserListByName" resultType="User" parameterType="String"> select * fr…
2.1 用来循环容器的标签forEach,查看例子   foreach元素的属性主要有item,index,collection,open,separator,close. item:集合中元素迭代时的别名, index:集合中元素迭代时的索引 open:常用语where语句中,表示以什么开始,比如以'('开始 separator:表示在每次进行迭代时的分隔符, close 常用语where语句中,表示以什么结束,   在使用foreach的时候最关键的也是最容易出错的就是collection属…
转载:https://www.cnblogs.com/wuzhenzhao/p/11092526.html 大部分时候,我们都是在Spring 里面去集成MyBatis.因为Spring 对MyBatis 的一些操作进行的封装,我们不能直接看到它的本质,所以先看下不使用容器的时候,也就是编程的方式,MyBatis 怎么使用.先引入mybatis jar 包. 首先我们要创建一个全局配置文件,这里面是对MyBatis 的核心行为的控制,比如mybatis-config.xml. 第二个就是我们的映…
一.resultMap 作用:发现数据库的查询结果与实体之间不匹配时,需要通过ResultMap来进行映射处理.常用于多表查询. 多表查询还是比较复杂的,因为可能的情况很多.这里只说两种情况: 1.1:1双项关系(关系属性为对象类型) 实体示例图: 配置文件做resultMap关系映射示例图: 解释: <resultMap>节点中的id属性------>用于下方的<select>节点的resultMap属性的设置. <result>节点的property属性---…
春节后的第一次课 1.整合日志(log4j和logback) (1)log4j和logback都是一个日志记录框架 (2)appender记住两个 stdout控制台显示日志,file记录文件中 (3)床用的5种日志级别(由高到低) fatal>error>trace>info>debug (4)log4j的整合步骤 1)在resources加入名称为log4j.properties的物理文件 2)在最后一行加入log4j.logger.(自己的包名)=debug,srdout,f…
在之前的文章中我们了解到最终的数据库最终操作是走的代理类的方法: @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { SqlSession sqlSession = getSqlSession( SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this.executorType, Sql…
使用端 引入架构端Maven依赖 SqlMapConfig.xml-数据库配置信息(数据库连接jar名称.连接URL.用户名.密码),引入Mapper.xml的路径 XxMapper.xml-SQL配置信息(SQL语句.参数类型.返回值类型) 架构端(本质对JDBC封装) 加载使用端配置信息(数据库配置信息.SQL配置信息)为输入流,读入内存 解析配置文件输入流(使用Dom4j解析) ​ 创建SqlSessionFactoryBuilder类,编写build()方法,用户创建SqlSession…
MyBatis这是现在很流行ORM框架,这是非常强大.事实上现却比較简单.优雅. 本文主要讲述MyBatis的架构设计思路,而且讨论MyBatis的几个核心部件.然后结合一个select查询实例.深入代码,来探究MyBatis的实现. 一.MyBatis的框架设计        注:上图非常大程度上參考了iteye 上的chenjc_it所写的博文原理分析之二:框架总体设计 中的MyBatis架构体图,chenjc_it总结的很好,赞一个! 1.接口层---和数据库交互的方式 MyBatis和数…
总觉得,看比人写的总是那么好,每次搭建框架时都会找博客,找教程来跟着一步一步走,虽然很快搭建成功了,但是经常情况是我并不知道我干了什么,也不记得具体步骤,到底为什么要这么做,今天我详细记录了一下自己搭建的过程,并且尽量理解每一步干什么. SSM框架当下比较流行,我也是用这个框架来作为记录,尝试详细地记录下每一个步骤,学习,不要怕开头难. 一.创建一个新的Maven项目 1. new -> Maven -> Maven Project 选择webapp工程. 2.maven项目建好以后,工程目录…
Configuration的newStatementHandler分析 SimpleExecutor的doUpdate方法上文有分析过: public int doUpdate(MappedStatement ms, Object parameter) throws SQLException { Statement stmt = null; try { Configuration configuration = ms.getConfiguration(); StatementHandler ha…
作者博客:http://blog.csdn.net/u010349169/article/category/2309433 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现. 一.MyBatis的框架设计        注:上图很大程度上参考了iteye 上的chenjc_it所写的博文原理分析之二:框架整体设…
前面三篇博客我们已经多次涉及到映射器的使用了,增删查基本上都用过一遍了,但是之前我们只是介绍了基本用法,实际上mybatis中映射器可以配置的地方还是非常多,今天我们就先来看看映射器还有哪些需要配置的地方,用好这些配置,可以让我们的mybatis变得非常灵活.如果小伙伴对于mybatis尚不了解可以先参考前面三篇博客(初识mybatis/初识mybatis(二)/mybatis常用配置)否则小伙伴可能不太容易理解本文的内容,老司机请略过. 映射器中的元素还是非常多的,比如select.inser…