聊聊、Mybatis XML
导航:
聊聊、手写Mybatis SpringBoot Starter
项目结构

引入依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.5</version>
</dependency>
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">
<configuration>
<properties resource="datasource-dev.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/AccountMapper.xml"/>
<mapper class="org.rockcode.mappers.AccountMapper" />
</mappers>
</configuration>
AccountMapper.xml
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="accountMapper">
<select id="queryAll" resultType="java.util.Map">
select * from account
</select>
</mapper>
AccoutMapper
package org.rockcode.mappers;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
public interface AccountMapper {
@Select("select * from account")
public List<Map<String,Object>> queryAll();
}
datasource-dev.properties
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/test?useSSL=false
username = root
password = root
Main方法
public static void main(String[] args) {
String source = "mybatis-config.xml";
try {
InputStream in = Resources.getResourceAsStream(source);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
List<Object> list = sqlSession.selectList("accountMapper.queryAll");
System.out.println(list);
System.out.println("====================================");
AccountMapper mapper = sqlSession.getMapper(AccountMapper.class);
List<Map<String, Object>> mapList = mapper.queryAll();
System.out.println(mapList);
} catch (IOException e) {
e.printStackTrace();
}
}
上面就是 xml 相关的代码,在 mybatis-config.xml 配置了下面这行:
<mappers>
<mapper resource="mappers/AccountMapper.xml"/>
<mapper class="org.rockcode.mappers.AccountMapper" />
</mappers>
mybatis 中总共有 4 种配置方式,resource、class、url、package。其中,class 和 package 会走代理逻辑。而 resource 和 url 不会走代理逻辑。这个后面会详细写到。
AccountMapper mapper = sqlSession.getMapper(AccountMapper.class) 对应 class 配置,也就是走 jdk动态代理。
List<Object> list = sqlSession.selectList("accountMapper.queryAll") 对应 resource 配置,直接 AccountMapper.xml 里面获取 sql 执行逻辑,不会走动态代理。
但是像 class、resource、url 配置不够灵活,如果有多个配置,则要写很多。
<mappers>
<mapper resource="mappers/AccountMapper.xml"/>
<mapper resource="mappers/AMapper.xml"/>
<mapper resource="mappers/BMapper.xml"/>
<mapper class="org.rockcode.mappers.AccountMapper" />
<mapper class="org.rockcode.mappers.AMapper" />
<mapper class="org.rockcode.mappers.BMapper" />
</mappers>
这个时候就可以用 package,<package name="org.rockcode.mappers"/>,则 org.rockcode.mappers 包下面的 Mapper 接口,都会处理。不用全部写在配置文件中。
xml 的配置就到这里了,下一篇会聊聊 mybatis 如何与 spring 集成的呢?用到了 spring 哪些扩展点呢?
聊聊、Mybatis XML的更多相关文章
- 聊聊MyBatis缓存机制【美团-推荐】
聊聊MyBatis缓存机制 2018年01月19日 作者: 凯伦 文章链接 18778字 38分钟阅读 前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用My ...
- 图解 | 聊聊 MyBatis 缓存
首发公众号-悟空聊架构:图解 | 聊聊 MyBatis 缓存 你好,我是悟空. 本文主要内容如下: 一.MyBatis 缓存中的常用概念 MyBatis 缓存:它用来优化 SQL 数据库查询的,但是可 ...
- mybatis xml配置文件要点说明
mapper映射方式: 1 一一具体列举的方式 2扫描package 如: <mappers> <!-- 告知映射文件方式1,一个一个的配置 <mapper resource= ...
- 如果拷贝项目出现各种找不到文件的时候,基本就是没有标记,或者文件名的问题,Could not find resource mybatis.xml,解决方法
Could not find resource mybatis.xml
- mybatis xml配置文件模版
mybatis xml配置文件模版 1.mybatis核心配置文件书写(SqlMapConfig.xml) <?xml version="1.0" encoding=&quo ...
- mybatis.xml和mapper.xml的配置
mybatis.xml和mapper.xml的配置 1.创建一个Source Folder 2.完成分包mapper和mybatis 3.创建mybatis.xml文档 4xml文档名 5.名字规范 ...
- spring boot 学习(五)SpringBoot+MyBatis(XML)+Druid
SpringBoot+MyBatis(xml)+Druid 前言 springboot集成了springJDBC与JPA,但是没有集成mybatis,所以想要使用mybatis就要自己去集成. 主要是 ...
- Java-MyBatis:MyBatis XML 文件
ylbtech-Java-MyBatis:MyBatis XML 文件 1.返回顶部 1. Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大, ...
- MyBatis从入门到精通(2):MyBatis XML方式的基本用法
本章将通过完成权限管理的常见业务来学习 MyBatis XML方式的基本用法 2.1一个简单的权限控制需求 权限管理的需求: 一个用户拥有若干角色,一个角色拥有若干权限,权限就是对某个模块资源的某种操 ...
随机推荐
- python剑指offer最小的K个数
题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路: 使用快排中的partition思想. ①我们设定part ...
- idea中使用maven方式使用jetty+cmd中使用Jetty运行(maven)Web项目
进度条件:必须是web项目 一.使用idea 导入项目或者打开(如果有可以忽略) 导入项目 . 全部next 导入成功,进行打开pom文件加入插件 <plugins> <!-- je ...
- spfa判负权边
spfa判负环 如果一个点在spfa中被入队了大于n次 那么,我们就能肯定,有负环出现. 因为一个点入队时,他肯定被更新了一次. 所以........ 如果不存在负权环.这个点最多被更新节点数次 我们 ...
- django模板层(templates)
1.基础部分 通过使用模板,就可以在URL中直接调用HTML,它还是松耦合的,灵活性强,而且更容易维护 而且可以将变量通过一定的方式嵌入到HTML中,最终渲染到页面,总的来说基于模板完成了数据与用户之 ...
- JDK 动态代理 讨债实例
现弄一个讨债接口 package cn.itcast.g_dongtaidaili; public interface Taozhai { void taozhai(); } 再弄一个讨债实现类 pa ...
- iRate快速绕坑使用
目的 iRate库通过激励用户去AppStore打分,来帮助你提升iPhone和Mac App的质量.这是取得经常使用的目标用户的意见的最好的方式之一. 方案(小弟想说的重点) 以前,App中都是显示 ...
- git(osChina上分支的使用)
使用osChina分支的创建分为两种 1.直接在osChina上创建 需要pull否则查看git的状态是不包含改分支的; git pull <git地址/git简称> <分支名> ...
- 简单webservice实现(xFire1.2)
基于xfire实现webservice的实例 首先下载xfire的jar包,并导入项目当中 下载地址:http://xfire.codehaus.org/Download 编写实现类 首先建一个接口把 ...
- CI的子目录控制器问题
不管是根目录还是子目录里面的文件名必须是首字母大写,否则会报404
- python中上双互斥锁的线程执行流程
import threading def sing(): print('进入sing -----------------') for i in range(3): print('进入sing循环 -- ...