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 ...
随机推荐
- Spring MVC入门知识总结
2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...
- 登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用
登录失败.该登录名来自不受信任的域,不能与 Windows 身份验证一起使用 使用sever sql 远程连接数据库的时候遇到了这个问题,我用的是ADO.NET 实体数据模型,有web.config ...
- 关于网站高性能中磁盘cpu以及内存对网站性能的影响
之前和同事聊天的时候,提到了这个硬件方面(包括内存,cpu,以及硬盘的存储选择),个人认为可以从这几个方面来提高底层硬件的性能,从而提高网站的整体吞吐量和速度. 一.主机: (1).CPU:决定处理的 ...
- 1-9 TCP/IP参考模型
ISO/OSI参考模型与TCP/IP模型对比 一.网络访问层 功能:包括IP地址与物理硬件地址的映射以及将IP地址封装成帧. 基于不同类型的网络接口,网路访问层定义了和物理介质的连接 网路访问层包含了 ...
- 界面设计常用CSS属性
CSS常用属性整理: 1 字体属性 font-family 设置使用的字体 font-style 设置字体的样式,是否斜体 font-variant 设置字体的大小写 font-weight 设置字体 ...
- TextField 的文字间距
#import "XZCTextField.h" @implementation XZCTextField ////控制清除按钮的位置//-(CGRect)clearButtonR ...
- 安卓手机开机开启指定Activity
1.布局 默认helloworld布局 2.class BootCompleteReceiver package lpc.com.project522; import android.content. ...
- Linux编程获取本地IP
#include <stdio.h> #include <sys/types.h> #include <ifaddrs.h> #include <netine ...
- 请不要做浮躁的IT人
1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么.当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异. 2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用 ...
- Python:生成器
生成器:使用了 yield 的函数被称为生成器(generator).它记住上一次返回时在函数体中的位置. yeild运行过程:当你向生成器要一个数时,生成器会执行,直至出现 yield 语句,生成器 ...