MyBtis之关于#{}和${}】的更多相关文章

前几天趁空闲时间整合了下SpringMVC+Mybatis+Druid,这里小记录下,这个Demo是基于Maven构建的,数据源用的是阿里巴巴温少的开源项目Druid,数据库用的是Mysql. 由于Eclipse去安装Maven很不方便,也老出错,这里我使用的是Spring Tool Suite(STS,基于 Spring IDE ,提供了其它的一些特性,如 基于 Spring dm Server 的osgi 开发,及其它一些 Spring 项目的支持,如 Spring Roo , Spring…
今天在修改一个关于mybtis语句时,偶然发现的一个错误  There is no getter for property named 'id' in class 'java.lang.String', 纠结了许久,终于明白了为什么. 原因:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取 string.xxx 值,如果没在在方法中定义,则会抛异常报错.当然也不是所有的版本会有这个问题,我的项目用的版本比较老. 有两种解决方案: 方案一: 将对应的参数用 _parameter…
一:Mybaits下载并搭建核心框架 1:下载mybatis的jar包: 2:创建mybatis框架链接数据库的配置文件Configuration.xml,格式如下 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- &l…
dao接口与mapper.xml的互相跳转…
mabitis逆向工程进行条件查询:…
一.什么是mybatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录.对于有一定sql基础的开发人员来说,非常好用. 二.mybatis的配置方法 1.引入jar包 2.创建表 3.创建数…
Mybatis的功能架构分为三层: 1)       API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层 一接收到调用请求就会调用数据处理层来完成具体的数据处理. 2)       数据处理层:负责具体的SQL查找.SQL解析.SQL执行和执行结果映射处理等.它主要的 目的是根据调用的请求完成一次数据库操作. 3)       基础支撑层:负责最基础的功能支撑,包括连接管理.事务管理.配置加载和缓存处理,这 些都是共用的东西,将他们抽取出来作为最基础的组件.…
在实际的项目开发中,通常对数据库的查询性能要求很高,而mybatis提供了查询缓存来缓存数据,从而达到提高查询性能的要求. mybatis的查询缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的缓存,二级缓存时mapper级别的缓存,二级缓存是多个SqlSession共享的. mybatis通过缓存机制减轻数据压力,提高数据库性能. 前言: mybatis的查询缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的缓存,二级缓存时mapper级别的缓存,二级缓存是多个Sq…
mbg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"…
1.${}的用法的mapper文件配置: </select>     <select id="selById2" resultType="com.susu.pojo.People" parameterType="com.susu.pojo.People">   select * from people where id = ${id}   </select> 测试的java代码: People people =…
<if test="groupIds != null and groupIds.size>0"> and (group_id in<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">#{item}</for…
问题描述 数据库采用的是postgresql,以下面的rule表为例,该表的id设置为自增,那么经常有这样的需求,在执行insert操作后,紧接着需要获取该记录的自增id往中间表中插入数据,或者是再根据id做一些查询之类的. 解决办法      以下两种方法效果一致 1.采用selectKey做一个子查询,赋值给属性id,并设置order=“AFTER”让其是在INSERT之后再执行,这样才能获取到自增id.mapper代码如下.需要注意的是,这里的resultType要跟Rule实体中id的类…
mybatis plus让我们从很大程度上实现了用"java去写sql",但是有些很隐晦的使用方式,如果不注意的话,也会引起错误: 如果.in的时候给了一个null,这个时候并不会跟我们惯性思维一样,返回一个空的结果,mybatis会解释为不做限制,把全部的数据一次取出来. 这个如果不亲身经历的话,不是很容易注意到这个语意,在此标记一下.…
1.编写持久化对象 public class User { private String id;//用户编号 private String username;//用户名 private String password;//用户密码 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } p…
这个是我写的第一个随手小记,一晃眼做后端开发也有7年多了,现在也准备将一些杂七杂八的资料整理下.也算是回顾这7年中做的比较有意思的东西了. 这个需求是我17年做的,当时的应用场景是仓储库比较多,随时会动态的开启和关闭.好在数据库的表结构是一致的.需要针对不同的库将商品进行有效的管理起来.考虑到数据源是动态变化的,那么使用spring架构下的多数据源配置是行不通.因为表名一致,而且数据源是动态变化的,最少也有90多家的数据,手工配置会死人的.那换成java的jdbc管理呢,最基本的那个,考虑到现在…
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean"> select t.* from tableName t where t.id= #{id} </select> 其中方法名和ID一致,…
1.是谁决定了走redis缓存?当然是mybatis啊 mybatis里默认实现数据的增删改查功能,这里要用到缓存啊 而且是mybatis这种orm框架采用缓存机制的,mybatis默认都有两层缓存了!所以,你只需在mybatis中配置redis即可,mybtis之后就会自动走redist. 2.你只需在mybatis中配置redis即可,mybtis之后就会自动走redist.!!!!而不是在spring中!!! 3.你只需在mybatis中配置redis即可,mybtis之后就会自动走red…
随笔分类 - J2EE   关于SpringMVC Json使用 摘要: 很简单的一个东西,这里就不做过多介绍了,写一个小Demo,随手记录下.首先,在搭好SpringMVC工程环境之后,如果想用Spring自带的Json,需要额外的添加2个JAR包:1.jackson-core-asl-1.9.9.jar2.jackson-mapper-asl-1.9.9.jar我这里...阅读全文 posted @ 2014-12-16 18:32 Balla_兔子 阅读(218) | 评论 (0) 编辑…
作用:封装了JDBC操作,简化数据库访问代码.封装的功能:1.获取连接,执行SQL,释放连接2.SQL参数设置(可以直接传入对象,Mybtis会将对象的属性传入SQL语句) #{属性值}取代JDBC的?占位符3.执行结果映射成实体对象.JDBC中需要开发者自己转换. 实体类的属性名与查询结果集ResultSet的列名保持一致,结果集有别名的话以别名为属性名.开发者工作:写SQL语句和实体类,然后使用SqlSession对象执行SQL操作. Mybatis结构 SqlMapconfig.xml文件…
周末这天手痒,正好没事干,想着写一个分页的例子出来给大家分享一下. 这个案例分前端和后台两部分,前端使用面向对象的方式写的,里面用到了一些回调函数和事件代理,有兴趣的朋友可以研究一下.后台的实现技术是将分页Pager作为一个实体对象放到domain层,当前页.单页数据量.当前页开始数.当前页结束数.总数据条数.总页数都作为成员属性放到实体类里面. 以前项目数据库用的是oracle,sql语句的写法会从当前页开始数到当前页结束数查询数据.刚刚在这纠结了很长时间,查询到的数据显示数量总是有偏差,后来…
今天搭建新的项目环境,从网上找了些ssm的搭建步骤,终于找到了一位csdn的大佬,可以说写的特别详细,按照上面步骤搭建即可,为了方便日后参考,转载到本人博客,原文链接:https://blog.csdn.net/khxu666/article/details/79851070: 这篇文章主要以idea做参考,没有的自己破解,其余的工具可以根据下面步骤下载安装和使用 开发工具 IntelliJ IDEA Ultimate 2017.2.2 Apache-tomcat-9.0.5 JDK 1.8.0…
1.为什么要配置mybtis的logger? mybatis自己设计以及实现了org.apache.ibatis.logging.Log接口. Mybatis为了避免对第三方的日志包存在强依赖,内部的Log采用了代理模式.通过配置的方式,代理真实的日志对象 如果没有配置log,mybatis会按照以下顺序尝试加载Log:SL4j->Common logging->log4j2->log4j->jdkLoging->noLogging static { tryImplement…
前言 项目框架主要是spring,持久层框架没有用mybtis,用的是spring 的jdbc: 业务需求:给应用添加领域(一个领域包含多个应用,一个应用可能属于多个领域,一般而言一个应用只属于一个领域),要求是给应用添加领域的时候,先将该应用已有的领域都删除,之后再将选中的领域添加到数据库: 为了减少准备工作,我利用了以前的代码和数据建模,那么就成了:添加person的时候先删除已存在name为新添加person的name的person,再添加新person,说直白点就是:添加name为zha…
一.需求分析 1.Mybatis是什么? 一个半自动化的orm框架(Object Relation Mapping). 2.Mybatis完成什么工作? 在面向对象编程中,我们操作的都是对象,Mybatis框架是一个数据访问层的框架,帮我们完成对象在数据库中的存.取工作. 为什么称为半自动化? 关系型数据库的操作是通过SQL语句来完成的,Mybatis在帮我们做对象的存取时,需要我们提供对应的SQL语句,它不自动帮我们生成SQL语句,而只帮我们完成: 1)对象属性到SQL语句参数的自动填充:2)…
1.实现关联表查询 1.1. 一对一关联 1). 提出需求 根据班级id查询班级信息(带老师的信息) 2). 创建表和数据 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VARCHAR(20), teacher_id INT ); ALTER TABLE…
依赖: <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId>…
前面几篇文章介绍了Mybtis中四个重要的对象,其中提到它们都是在Configuration中被创建的,我们一起看一下创建四大对象的方法,代码如下所示: public ParameterHandler newParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql) { ParameterHandler parameterHandler = mappedStatement…
Mybatis在使用前需进行初始化,下面就针对Mybatis的初始化过程进行介绍.Mybatis的初始化过程有两种:基于XML和基于Java API两种方式,下面就针对基于XML的方式进行展开. 一.Mybatis初始化的基本过程 Mybatis的初始化过程如下图所示: 调用 SqlSessionFactoryBuilder 对象的 build(inputStream) 方法: SqlSessionFactoryBuilder 会根据输入流 inputStream 等信息创建XMLConfigB…
Java中使用Mybatis批量插入数据时Mapper.xml中的sql如下: <insert id="batchSave"> into t_emp(emp_name,emp_email,dept_id) VALUES <foreach collection="list" item="emp" separator=","> (#{emp.empName}, #{emp.empEmail}, #{emp.…
原文链接 前言mybatis是一个半自动化的orm框架,所谓半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis,mybatis非常灵活,可以随心所欲的编写自己的sql语句来实现复杂的数据库操作,还会有一种畅酣淋漓的编写sql语句的潇洒感,但是以前的mybaits需要一大堆的配置文件,以及各种mapper和dao和实体的关联,导致使用mybatis还是不够简洁,后来…