mybatis学习第一次使用
mybatis学习第一天
- 1.使用IDEA创建一个maven工程
- 2.去百度mvn r.. https://mvnrepository.com/artifact/org.mybatis/mybatis/3.4.4 查找mybatits的maven包的结构
- 3.http://www.mybatis.org/mybatis-3/zh/getting-started.html 跟着这个教程简单的实践一下如何简单的了解使用mybatits
- 4.使用navicat 创建一个mybatis的数据库,创建一个简单的表进行实验
添加mybatis maven 配置
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency>
创建数据库mybatis与之创建一个表user和对应的实体的文件信息
Create TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(50) ,`userAge` int(11) ,`userAddress` varchar(200),PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;Insert INTO `user` VALUES ('1', 'wangji', '25', 'guizhou');
创建与之对应的实体User
package com.jet.module.UserManage.entity;/*** Created by JetWang on 2017/7/19.*/
public class User {private int id;private String name;private Integer age;private String address;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 Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", address='" + address + '\'' +'}';}
}
配置mapping和Dao接口
说明一下,这里的mapping有点类似于Hibernate中Dao的实现,只是这个实现是在配置文件中去书写.
package com.jet.module.UserManage.dao;import com.jet.module.UserManage.entity.User;/*** Created by JetWang on 2017/7/19.*/
public interface UserDao {User findById(Integer id);
}
mapping,可以想象为Dao具体的实现
<?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.jet.module.UserManage.dao.UserDao"><!-- 1.命名空间是唯一的,根据你的Dao接口来定制的,Select标签的id对应我们的方法上的函数名称--><!-- 这里的#{id},相当于传递进来的参数,你可以想象成map中的一个key,或者一个JavaBean中的对应的属性名称--><select id="findById" parameterType="int" resultType="User">select id,userName as name,userAge as age,userAddress as address from `user` where id = #{id}</select>
</mapper>
mybatis-config的属性配置直接去官方copy下来,对于学习来说,基本的配置属性基本够用了
<?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><typeAliases><typeAlias alias="User" type="com.jet.module.UserManage.entity.User"/><!--别名,可以在mapping中直接使用的--></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/><property name="username" value="root"/><property name="password" value="wang"/></dataSource></environment></environments><mappers><!--查找映射文件信息--><mapper resource="user-mapping.xml"/></mappers>
</configuration>
然后就是写个测试,测试一下我们这个查找通过ID能不能成功。
基本的步骤就是获取配置文件中的属性来创建Session工程,然后获取一个Session,就可以通过命名空间进行查询或者通过Mapper进行查询。和JDBC中的Connection有点类似,与Hibernate中的Session一样的道理。(怎么去获取配置文件之类的官方文档很详细)
import com.jet.module.UserManage.dao.UserDao;
import com.jet.module.UserManage.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Assert;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;/*** Created by JetWang on 2017/7/19.*/
public class UserDaoTest {@Testpublic void findByIdTest() {InputStream inputStream = null;SqlSessionFactory sqlSessionFactory = null;SqlSession sqlSession = null;try {inputStream = org.apache.ibatis.io.Resources.getResourceAsStream("mybatis-config.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);sqlSession = sqlSessionFactory.openSession();//这里面向接口的,mybatis使用动态代理给你生成实现类,不需要DaoImplUserDao userDao = sqlSession.getMapper(UserDao.class);User user = userDao.findById(1);/*通过命名空间进行查询User user = sqlSession.selectOne("com.jet.module.UserManage.dao.UserDao.findById",1);*/Assert.assertNotNull(user);System.out.println(user.toString());} catch (IOException e) {e.printStackTrace();} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (sqlSession != null) {sqlSession.close();}}}
}
好好动起来,可以了
地址: https://github.com/WangJi92/mybatits-study/blob/master/mybatis-study/study-1
mybatis学习第一次使用相关推荐
- MyBatis学习随记
1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 Public static void main(String[] args) { Conn ...
- Java框架学习笔记--Mybatis学习
一.Mybatis学习 1.Mybatis简介 简介:Mybatis开源免费框架.原名叫iBatis,2010在googlecode,2013年迁移到github2 作用:数据访问层框架.底层是对JD ...
- 狂神说——Mybatis 学习
[狂神说Java]Mybatis最新完整教程IDEA版通俗易懂 Mybatis 笔记及源码 Mybatis 中文文档 Mybatis 案例源码 狂神说--Mybatis 学习 简介 什么是Mybati ...
- MyBatis学习系列——二级缓存
[MyBatis学习13]MyBatis中的二级缓存 发表于2016/6/16 7:26:19 4922人阅读 分类: ● 框架技术 --[MyBatis] 1. 二级缓存的原理 前面介绍了,myb ...
- mybatis学习指南--xml文件方式篇
mybatis学习指南---xml文件篇 以下内容是由我总结mybatis官方文档和实践中的一些经验,总共分为四篇:xml文件配置篇,java方式配置篇,缓存篇,其他配置篇,第一次这样正式的写一篇文章 ...
- 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
[转]MyBatis学习总结(四)--解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体 ...
- 事务中mybatis通过id查不到但是通过其他条件可以查到_40打卡 MyBatis 学习
第57次(mybatis) 学习主题:mybatis 学习目标: 1 掌握框架的概念 2 掌握mybatis环境搭建 对应视频: http://www.itbaizhan.cn/course/id/8 ...
- mybatis学习笔记(13)-延迟加载
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- mybatis学习笔记(7)-输出映射
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(7)-输出映射 标签: mybatis [TOC] 本文主要讲解mybatis的输出映射. 输出映射有 ...
最新文章
- java对于数组的定义_Java中方法的定义与使用,以及对数组的初步了解。
- [NOIP2006] 提高组 洛谷P1066 2^k进制数
- Asp.net中执行.EXE程序的方法
- 基于FFT的信号频谱分析
- 【学术相关】一院士给博士生的一封信:每天工作12小时,这仅是一个下限!...
- HDU 1284 钱币兑换问题 (完全背包)
- Win7_刻录DVD
- cuSPARSE库:(十五)已经弃用的函数(1)
- 程序员面临 35 岁危机?网友:我 70 了,依然在写程序
- Selenium之Chrome浏览器的启动问题及解决
- 基于AE+C#读取文件及图层输出
- 在Latex如何添加Visio绘图
- scrollbars属性,MultiLine 属性
- 市场供需简单模型分析
- HCIE-RS的学习过程考证心得(面试过渡新版本)
- 电子凸轮和电子齿轮的差别
- C++ endl 详解
- 读 Lars V. Ahlfors 之《复分析》
- 弹性云服务器使用须知
- 电池极耳尺寸视觉检测系统