一起来学习Mybatis(一)-入门
来源:互联网 发布:天下3鬼墨女捏脸数据 编辑:程序博客网 时间:2024/05/16 12:45
本文标题是Mybatis入门,既然是入门,那么意味着它很简单,但是简单!=不重要。如果之前没有接触过Mybatis,强烈建议从此篇看起。关于Mybatis的学习会完成一系列的文章,本着n+1的原则,由少到多,逐渐深入。
新建一个java Web项目,既然要使用Mybatis,首先要做的就是引用Mybatis提供的jar文件。将 mybatis-x.x.x.jar 文件放到项目的 classpath 中即可,通常我们把它放到 WEB-INF/lib 目录下。
什么是 classpath ?
类文件路径,src目录不是classpath, WEB-INF/classes,lib才是classpath,classes文件夹中存放src目录下java文件编译之后的class文件,xml、properties等资源配置文件。lib通常放置我们所引用的外部类文件。
当然,你也可以使用 Maven 来管理项目,在pom.xml文件中添加下面的依赖。没有使用过 Maven 也没有问题,直接把这部分忽略就好,它和我们理解mybatis没有直接关系。
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency>
因为我们是对数据的操作,所以需要添加相应的数据库驱动包,方法和上面一样,这里以MySQL为例。
mysql-connector-java-x.x.x-bin.jar
分析
在Mybatis中,SqlSession类是核心,想要执行SQL语句就需要先创建一个SQL会话对象。Mybatis为此提供了一个工厂模式的实现来完成SqlSession的初始化。大致流程如下:
也就是说我们需要先使用 SqlSessionFactoryBuilder 来生成 SqlSessionFactory ,继而得到 SqlSession 对象来执行已映射的SQL语句。
数据表 t_user
在 MySQL 上新建一个名为 “mybatistest”的数据库,并为它添加用户信息表 t_user:
实体类 UserEntity
添加一个实体类,与t_user表相对应。
public class UserEntity { private String userID; private String userType; public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getUserType() { return userType; } public void setUserType(String userType) { this.userType = userType; }}
UserDao
为了便于维护与拓展,添加了一个UserDao的接口类,来描述对t_user数据表的操作。
public interface UserDao { public UserEntity selectUserByID(String id);}
user-mapper.xml
既然声明了接口,自然需要来实现接口中方法,在Mybatis中,实现写在了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="dao.UserDao"> <select id="selectUserByID" resultType="entity.UserEntity"> select * from t_user where userID = #{id} </select></mapper>
创建 SqlSessionFactory
我们这次通过 XML 文件来构建 SqlSessionFactory 的实例。同样的我们把 XML 文件放置到 classpath 下,便于查找。这里以 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> <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://localhost:3306"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- SQL映射文件,这部分先不用理会,后面会用到 --> <mappers> <mapper resource="resources/user-mapper.xml"/> </mappers></configuration>
准备好了配置文件,现在我们来创建一个 SqlSessionFactory :
//配置文件路径,因为是在classpath下,所以填写文件名就行String resource = "configuration.xml";//用字节流的方式读取配置文件InputStream inputStream = Resources.getResourceAsStream(resource);//构建SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
测试
现在基本的工作已经完成了,来测试一下。我们已经有了一个 SqlSessionFactory对象,用它打开一个 SqlSession 就能执行接口中的方法了。
SqlSession sqlSession = sqlSessionFactory .openSession();try { UserDao userDao = sqlSession.getMapper(UserDao.class); UserEntity user = userDao.selectUserByID("1"); System.out.println(user.getUserType());} finally { sqlSession.close();}
小结
虽然是Java Web项目,也无需启动Tomcat,通过接收一个Web请求来对Mybatis是否连接成功进行测试。可以使用JUnit框架进行单元测试,省心省力。
未完待续。。。
- 一起来学习Mybatis(一)-入门
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- MyBatis入门学习(一)
- Mybatis入门学习(一)
- # MyBatis学习笔记(一)快速入门
- mybatis学习(一) 快速入门
- MyBatis学习笔记(一)入门
- Mybatis学习笔记(一):入门
- MyBatis学习之入门篇(一)
- 【mybatis学习之入门(一)】
- MyBatis学习(一) 入门+例子
- Foundations of streaming SQL
- Android_扫描二维码
- 组合View-标题栏自绘控件圆形进度条/扫描二维码/自定义ViewGroup阶梯布局
- 深入剖析串口通信数据格式
- 控件操作类
- 一起来学习Mybatis(一)-入门
- display:inline-block,block,inline的区别与用法
- 软工视频总结
- android 自定义View简单的ProgressView圆形进度条
- 如何判断Linux是32位还是64位
- 【opencv3】 Mat类用法总结
- 百度地图之添加覆盖物
- P2939 [USACO09FEB]改造路Revamping Trails(迪杰斯特拉+堆优化)
- activity显隐跳转及值传递