mybatis学习之路
MyBatis 是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。
MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的domain映射成数据库中的记录。
快速入门:
1.添加jar包
mybatis-3.2.1.jar(jar包版本不能太低,太低的版本无法支持接口注解)
mysql-connector-java-5.1.8-bin.jar
2.创建表
在此使用的是mysql数据库来测试
create table user( id int primary key auto_increment, name ), age int );
3.创建configuration.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="db.properties"></properties> <typeAliases> <typeAlias type="com.model.User" alias="User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"/> <dataSource type="POOLED"> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="url" value="${url}"/> <property name="driver" value="${driver}"/> </dataSource> </environment> </environments> <mappers> <!-- 首先使用接口注解的方式来映射 --> <mapper class="com.dao.UserDao"/> </mappers> </configuration>
4.定义实体类
package com.dao; public class User { private int id; private String name; private int age; 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 = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
5.编写接口
public interface UserDao { @Select("select * from user where id=#{id}") public User selectById(int id); }
6.在已配置过的configuration.xml中配置接口映射,必须是接口的全类名
<mappers> <!-- 首先使用接口注解的方式来映射 --> <mapper class="com.dao.UserDao"/> </mappers>
7.编写测试文件
public class Main { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub InputStream is = Main.class.getClassLoader().getResourceAsStream("configuration.xml"); /** * 另一种方式读取mybatis配置文件 * String resource="configuration.xml"; * Reader reader = Resources.getResourceAsReader(resource); */ SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession ss = sqlSessionFactory.openSession(); UserDao userDao = ss.getMapper(UserDao.class); User user = userDao.selectById(1); System.out.println(user); } }
以上是使用基于接口注解的方式来映射,当我们使用接口注解时,并不仅仅局限于以下配置:
<mappers> <!-- 首先使用接口注解的方式来映射 --> <mapper class="com.dao.UserDao"/> </mappers>
我们还可以创建该接口的实现--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.dtd"> <mapper namespace="com.dao.UserDao"> </mapper>
然后将configuration.xml配置改为:
<mappers> <!-- 使用xml的方式来映射 --> <mapper resource="com/dao/UserMapper.xml"/> </mappers>
注意:当使用接口定义方法,而没有提供注解时,这时的UserMapper.xml就需要配置该接口所需要的信息了:
接口:
public interface UserDao { public User selectById(int id); }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dao.UserDao"> <select id="selectById" parameterType="int" resultType="User"> select * from user where id=#{id} </select> </mapper>
<mappers> <!-- 使用xml的方式来映射 --> <mapper resource="com/dao/UserMapper.xml"/> </mappers>
------------------------------------以上是使用接口方式来映射----以下使用xml方式来映射---------------------------------------------
在上面的步骤中,将第5步去掉,然后编写完整的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.dtd"> <mapper namespace="com.dao.UserMapper"> <select id="selectById" parameterType="int" resultType="User"> select * from user where id=#{id} </select> </mapper>
然后将configuration.xml配置为:
<mappers> <!-- 使用xml的方式来映射 --> <mapper resource="com/dao/UserMapper.xml"/> </mappers>
测试:
public class Main { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub InputStream is = Main.class.getClassLoader().getResourceAsStream("configuration.xml"); /** * 另一种方式读取mybatis配置文件 * String resource="configuration.xml"; * Reader reader = Resources.getResourceAsReader(resource); */ SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession ss = sqlSessionFactory.openSession(); User user = ss.selectOne("com.dao.UserDao.selectById", 1); System.out.println(user); } }
以上是快速入门情况,很多配置没有详细说,下面章节开始详细讲解MyBatis配置等!!
ps:该文章仅代码本人学习过程,希望能给想学习的或正在学习的朋友带来一定的领悟.
欢迎大家指正错误,小弟在此感激不尽!!!
mybatis学习之路的更多相关文章
- mybatis学习之路----批量更新数据两种方法效率对比
原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方 ...
- MyBatis学习之路之configuration配置
1.首先讲解的是MyBatis核心配置文件configuration.xml的配置 一个完整的configuration.xml配置顺序如下: properties,settings,typeAlia ...
- myBatis学习之路1-基本功能实现
myBatis也是一个持久型框架,相较于hibernate来说,算是轻量级的. 1.配置mybatis环境 相关jar下载地址:mybatis+mysalJAR包 2.新建一个java project ...
- mybatis学习之路----mysql批量新增数据
原文:https://blog.csdn.net/xu1916659422/article/details/77971867 接下来两节要探讨的是批量插入和批量更新,因为这两种操作在企业中也经常用到. ...
- springboot 学习之路 3( 集成mybatis )
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- 新篇章之我的java学习之路下
昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...
- springboot 学习之路 8 (整合websocket(1))
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- springboot 学习之路 1(简单入门)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- springboot 学习之路 2(注解介绍)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
随机推荐
- Windows资源管理器 已停止工作
解决方案:http://jingyan.baidu.com/article/5225f26b6aa830e6fa0908a8.html
- Linxu学习之03_LInux文件与目录管理
同样只介绍相关命令 这节相关主要的命令有这些: 1.目录的相关操作 cd----切换目录 pwd----显示当前目录 mkdir----新建一个新的目录 rmdir----删除一个空的目录
- centos6.5环境源码编译安装mysql5.6.34
centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...
- MySQL 5.7 深度解析: 半同步复制技术
复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史. MySQL的复制分为四种: 普通的replication,异步同步. 搭建简单,使用非常广泛,从mysql诞生之初,就产生了 ...
- 进阶篇:以IL为剑,直指async/await
接上篇:30分钟?不需要,轻松读懂IL,这篇主要从IL入手来理解async/await的工作原理. 先简单介绍下async/await,这是.net 4.5引入的语法糖,配合Task使用可以非常优雅的 ...
- 理解angularjs的作用域
<!doctype html> <html ng-app="myApp"> <head> <script src="http:/ ...
- {CSDN}{英雄会}{砍树、石子游戏}
砍树 思路: 可以将题目意图转化为:给定一棵树,求其中最接近总权值一半的子树. DFS求每个节点的所有子节点的权值和,遍历每个节点,最接近总权值一半的即为答案.复杂度O(N). 石子游戏: 思路: 一 ...
- web初学之jdbc连接数据库
一直没有找到bug,初次接触jdbc找问题也是比较生疏.. 抛出异常: 出错点是没有在build path下导入mysql驱动jar包,发现问题,导入,成功解决问题.
- malloc()参数为0的情况
问题来自于<程序员面试宝典(第三版)>第12.2节问题9(这里不评价<程序员面试宝典>,就题论题): 下面的代码片段输出是什么?为什么? char *ptr; ))==NULL ...
- Spring 定时执行任务
好不容易写了半天的文章竟然由于断网而丢失了,并未自动保存到草稿箱.只能简单的贴贴代码了. <?xml version="1.0" encoding="UTF-8&q ...