文章目录
1、MyBatis简介
2、Mybatis第一个程序
2.1 准备开发环境
2.2 添加jar包
2.3 连接数据库和表
2.4 使用Mybatis查询数据
3、持久化与ORM
4、MyBatis的开发步骤小结
1、MyBatis简介
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
- 半自动化的ORM实现
- DAO层
- 动态SQL
- 小巧灵活、简单易学
2、Mybatis第一个程序
2.1 准备开发环境
2.2 添加jar包
2.3 连接数据库和表
数据库名为 smbms,表名为 smbms_user。
2.4 使用Mybatis查询数据
1、创建对应于数据库字段的实体类
package cn.kgc.entity; import java.util.Date; public class User { private Integer id; //id private String userCode; //用户编码 private String userName; //用户名称 private String userPassword; //用户密码 private Integer gender; //性别 private Date birthday; //出生日期 private String phone; //电话 private String address; //地址 private Integer userRole; //用户角色 private Integer createdBy; //创建者 private Date creationDate; //创建时间 private Integer modifyBy; //更新者 private Date modifyDate; //更新时间 private Integer age;//年龄 private String userRoleName; //用户角色名称 public String getUserRoleName() { return userRoleName; } public void setUserRoleName(String userRoleName) { this.userRoleName = userRoleName; } public Integer getAge() { /*long time = System.currentTimeMillis()-birthday.getTime(); Integer age = Long.valueOf(time/365/24/60/60/1000).IntegerValue();*/ Date date = new Date(); Integer age = date.getYear()-birthday.getYear(); return age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserCode() { return userCode; } public void setUserCode(String userCode) { this.userCode = userCode; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Integer getUserRole() { return userRole; } public void setUserRole(Integer userRole) { this.userRole = userRole; } public Integer getCreatedBy() { return createdBy; } public void setCreatedBy(Integer createdBy) { this.createdBy = createdBy; } public Date getCreationDate() { return creationDate; } public void setCreationDate(Date creationDate) { this.creationDate = creationDate; } public Integer getModifyBy() { return modifyBy; } public void setModifyBy(Integer modifyBy) { this.modifyBy = modifyBy; } public Date getModifyDate() { return modifyDate; } public void setModifyDate(Date modifyDate) { this.modifyDate = modifyDate; } }
2、添加Mybatis的配置文件mybatis-config.xml
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="database.properties"> </properties> <!--<settings>--> <!--<setting name="logImpl" value="LOG4J"/>--> <!--</settings>--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <!-- 数据库连接的配置信息 驱动,URL,用户名,密码--> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${user}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 将mapper映射文件加入到系统核心配置文件中 --> <mappers> <mapper resource="cn/kgc/dao/user/UserMapper.xml"/> </mappers> </configuration>
3、定义操作表的sql映射文件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="cn.kgc.dao.user.UserMapper"> <select id="cnt" resultType="int"> select count(1) from smbms_user </select> <select id="user" resultType="cn.kgc.entity.User"> select * from smbms_user </select> </mapper>
4、编写测试代码:执行定义的select语句
package cn.kgc.dao.user; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.*; import java.io.IOException; import java.io.InputStream; public class UserMapperTest { @Test public void test(){ //测试方法 SqlSessionFactory factory=null; SqlSession session=null; int count=0; /** * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源的运行环境信息 * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。 * 3、将sql映射文件注册在全局配置文件中 * 4、写代码: * 1)、根据全局配置文件得到SqlSessionFactory; * 2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查 * 一个sqlSession就是代表和数据库的一次会话,用完关闭 * 3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。 * * @throws IOException */ try { //1.读取mybatis配置,转成io流 InputStream is= Resources.getResourceAsStream("mybatis-config.xml"); //2.利用io流对factory对象赋值 factory= new SqlSessionFactoryBuilder().build(is); //3.由工厂创建SqlSession对象 session=factory.openSession(); //由session对象进行语句查询 count=session.selectOne("cn.kgc.dao.user.UserMapper.cnt"); System.out.println(count); } catch (IOException e) { e.printStackTrace(); } } }
- 核心接口和类的结构
- SqlSessionFactoryBuilder
用过即丢,其生命周期只存在于方法体内
可重用其来创建多个 SqlSessionFactory 实例
负责构建SqlSessionFactory,并提供多个build方法的重载
读取XML文件构造方式: String resource = "mybatis-config.xml"; InputStream is = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
- SqlSessionFactory
SqlSessionFactory是每个MyBatis应用的核心
作用:创建SqlSession实例
作用域:Application
生命周期与应用的生命周期相同
SqlSession session = sqlSessionFactory.openSession(boolean autoCommit);
- SqlSession
包含了执行SQL所需的所有方法
对应一次数据库会话,会话结束必须关闭
线程级别,不能共享
- SqlSession的两种使用方式
- 通过SqlSession实例直接运行映射的SQL语句
- 基于Mapper接口方式操作数据
5、运行结果,成功查询出user的数据
3、持久化与ORM
- 持久化是程序数据在瞬时状态和持久状态间转换的过程
- ORM(Object Relational Mapping)
- 编写程序的时候,以面向对象的方式处理数据
- 保存数据的时候,却以关系型数据库的方式存储
- ORM解决方案包含下面四个部分
- 在持久化对象上执行基本的增、删、改、查操作
- 对持久化对象提供一种查询语言或者API
- 对象关系映射工具
- 提供与事务对象交互、执行检查、延迟加载以及其他优化功能
4、MyBatis的开发步骤小结
- 下载mybatis-3.2.2.jar包并导入工程
- 编写MyBatis核心配置文件(configuration.xml)
- 创建实体类-entity
- DAO层-SQL映射文件(mapper.xml)
- 创建测试类
- 读取核心配置文件mybatis-config.xml
- 创建SqlSessionFactory对象,读取配置文件
- 创建SqlSession对象
- 调用mapper文件进行数据操作