MyBatis

深入迁出mybatis系列

血红的双手。 提交于 2020-03-30 20:48:12
本系列教程均源于 南柯梦 ,经 好库文摘 转发,感谢南柯梦的辛苦整理。 深入迁出mybatis系列 深入浅出Mybatis系列(一)---Mybatis入门 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇) 深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇) 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇) 深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇) 深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap 深入浅出Mybatis系列(九)---强大的动态SQL 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇) 来源: https://www.cnblogs.com/huntdream/p/6014652.html

简单模拟Spring整合Mybatis

余生长醉 提交于 2020-03-30 18:54:20
整体包结构 首选我们需要一个接口类,相当于是Mapper package com.fh.mybatis.dao; import com.fh.mybatis.config.Select; public interface CardDao { @Select("select * from demo") void list(String mess); } 然后是接口类中用到的注解类 package com.fh.mybatis.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Select { String value() default ""; } 之后需要一个类,提供代理对象和执行具体的方法 因为实现类FactoryBean接口的类,实例化的时候,会返回getObject方法所返回的对象 package com.fh.mybatis

mybatis的缓存2

余生颓废 提交于 2020-03-30 15:04:13
原文:https://blog.csdn.net/qq_38274974/article/details/100898145 mybatis的缓存分为一级缓存、二级缓存 那么,我们为什么要使用缓存呢? 对于经常查询的并且不经常改变的数据,如果每次查询都要与数据库进行交互,这样就大大降低了效率,所以这里就引入了缓存,将一些对结果影响不大且经常查询的数据存放在内存中,从而减少与数据库的交互来提高效率,这就是缓存的优势。 一级缓存 一级缓存是SqlSession级别的缓存(默认是支持一级缓存,不需要再配置文件中配置一级缓存),在操作数据库时,每个SqlSession类的实例对象中有一个数据结构(HashMap)可以用来存储缓存数据,不同的SqlSession类的实例对象缓存的数据区域(HashMap)是互不影响的。当在同一个SqlSession中执行两次相同的sql语句时,第一次执行完毕会将数据写到内存中,第二次查询不执行sql直接从内存中获取。 public class MyBatisTest { //mybatis的一级缓存,是SqlSession级别的缓存,只有一个SqlSession对象。 @Test public void test1(){ SqlSessionFactory ssf=MyBatisUtil.getFactory(); SqlSession session

mybatise 设置全局变量实例

ε祈祈猫儿з 提交于 2020-03-30 11:46:15
前言 在平时的工作中有时候是需要在配置文件中配置全局变量的,因为这些东西是不会变的,并且每个mapper都传参的话也显得有点繁琐,还好mybatis本身是支持全局变量的,今天工作中用到了,记录一下。 mybatis可以设置全局变量,可以用于数据库类型的标示,比如: dbType=oracle 、 dbType=mysql; 可通过configurationProperties参数设置,设置方法如下: <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/> <property name="configurationProperties"> <props> <prop key="dbType">oracle</prop> </props> </property> </bean> java中获取此参数可以通过: sqlSessionFactory.getConfiguration().getVariables().getProperty(

mybatis配置全局变量

孤人 提交于 2020-03-30 11:45:02
在平时的工作中有时候是需要在配置文件中配置全局变量的,因为这些东西是不会变的,并且每个mapper都传参的话也显得有点繁琐,还好mybatis本身是支持全局变量的,今天工作中用到了,记录一下。 先在实例化sqlSessionFactory的时候添加上mybatis-configuration.xml的配置文件 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:mapping/*.xml" /> <property name="configLocation" value="classpath:mybatis-configuration.xml" /> </bean>  之后在mybatis-configuration配置文件中添加全局变量 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis

使用MyBatis搭建一个访问mysql数据库的简单示例

痴心易碎 提交于 2020-03-30 04:45:46
MyBatis是一个支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀 持久层框架 。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的 XML或注解 用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 框架整体结构图: 关键代码介绍 1.ICatagoryOperation接口 public interface ICatagoryOperation { void inserteCatagory(Catagory catagory); Catagory getCatagorybyID(int id); } 2.Catagory类 public class Catagory { private int id; private String name; private String description; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name =

使用MyBatis编写Dao的两种语法

≯℡__Kan透↙ 提交于 2020-03-29 07:55:12
原文链接: http://www.yiidian.com/mybatis/mybatis-dao.html 在MyBatis中,我们有两种Dao的写法,一种叫传统Dao写法,一种叫Mapper代理接口。下面看看如何实现。 1 传统Dao写法 1.1 编写CustomerDao接口 package com.yiidian.dao; import com.yiidian.domain.Customer; import java.util.List; /** * Dao接口 *一点教程网 - www.yiidian.com */ public interface CustomerDao { /** * 查询所有用户 */ public List<Customer> findAll(); /** * 添加 */ public void save(Customer customer); /** * 修改 */ public void update(Customer customer); /** * 查询一个 */ public Customer findById(Integer id); /** * 条件查询 */ public List<Customer> findByName(String name); /** * 删除 */ public void delete(Integer id)

mybatis配置和使用

橙三吉。 提交于 2020-03-28 15:44:09
1,配置 mybatis-config.xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!-- 填写自己的mysql用户名和密码, 还有连接的url要加上"?serverTimezone=GMT%2B8"不然会报错 --> <configuration> <!--环境的配置... --> <properties resource="jdbc-prod.properties"/> <settings> <!--其他配置... --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--其他配置... --> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value=

Mybatis 源码解析

喜欢而已 提交于 2020-03-28 12:43:13
一、搭建Spring中使用Mybatis环境 工程结构如下图所示 1、引入依赖 <properties> <spring.version>4.1.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.29</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency>

Mybatis 动态SQL

一个人想着一个人 提交于 2020-03-28 08:42:14
Mybatis 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQL 语句的准确性的同时,也大大提高了开发人员的效率。 以 User 表为例来说明: 1、 if 语句 根据 username 和 sex 来查询数据。如果username为空,那么将只根据sex来查询;反之只根据username来查询 首先不使用 动态SQL 来书写 <select id="selectUserByUsernameAndSex" resultType="user" parameterType="com.ys.po.User"> <!-- 这里和普通的sql 查询语句差不多,对于只有一个参数,后面的 #{id}表示占位符,里面不一定要写id, 写啥都可以,但是不要空着,如果有多个参数则必须写pojo类里面的属性 --> select * from user where username=#{username} and sex=#{sex} </select> 上面的查询语句,我们可以发现,如果 #{username} 为空,那么查询结果也是空,如何解决这个问题呢?使用 if 来判断 <select id="selectUserByUsernameAndSex"