mybatis入门

1Mybatis概述
1.1Mybatis是什么
MyBatis 是一个优秀持久层框架,由apache的开源项目iBatis演化而来,主要用于解决数据持久化问题,底层实现了对JDBC操作的封装。

参考网址:http://www.mybatis.org
1.2MyBatis 应用场景
a)简化JDBC编写步骤的复杂度
b)更好的实现ORM(对象关系映射)

提示:目前市场上还有一些类似的ORM框架,比如Hibernate.

1.3MyBatis 核心API
MyBatis 框架在实现数据的持久化操作时,需要关注了解的核心配置及对象为:

1)Configs(xml) 配置文件&映射文件(mapper)
2)SqlSessionFactoryBuilder(加载配置文件,创建SQLSessionFactory对象)
3)SqlSessionFactory(负责创建session对象)
4)SqlSession(负责执行SQL操作)
对以上API,先基本了解,然后再实践过程中再强化理解即可。

2Mybatis 编程实现
2.1Mybatis 应用配置
2.1.1MyBatis 依赖配置
要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。
如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:

org.mybatis
mybatis
3.2.8

2.1.2MyBatis 映射配置
MyBatis 中通过映射文件的配置实现SQL语句与具体操作的映射,例如:

现在mysql的test数据库中创建表:

CREATE TABLE sys_users (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(200) NOT NULL,
password varchar(200) NOT NULL,
phone varchar(20) NOT NULL,
createdDate date DEFAULT NULL,
modifiedDate date DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

写入测试数据

insert into sys_users
values
(null,‘A’,‘123456’,‘139’,now(),now()),
(null,‘B’,‘123456’,‘137’,now(),now());

定义映射文件(定义在资源目录的mapper包下)

<?xml version="1.0" encoding="UTF-8"?> select * from sys_users

查询语句是 MyBatis 中最常用的元素之一,其中 select 元素用于定义查询语句,select 中的id属性在 命名空间中是唯一的标识符,可以被用来引用对应的sql语句。resultType表示从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。

2.1.3MyBatis 核心配置
此配置文件放在maven项目的resource根目录下,起名为mybatis-config.xml.

<?xml version="1.0" encoding="UTF-8"?>

2.2创建SqlSessionFactory
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。这个SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 基于xml的配置创建。例如

/*MyBatis 应用中这个工厂需要具备全局唯一性
* ,我们要通过这个工厂创建SqlSession对象,
* 通过sqlsession对象操作数据库
/
private SqlSessionFactory factory;
@Before
public void init()throws IOException{
factory=new SqlSessionFactoryBuilder()
.build(Resources.
getResourceAsStream(“mybatis-config.xml”));
}

2.3创建SqlSession 执行操作
SqlSession 对象代表了一次SQL会话,包含了面向数据库执行 SQL 命令所需的所有方法。可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如:

SqlSession sqlSession=sessionFactory.openSession();
List<Map<String,Object>> list=
sqlSession.selectList(“com.project.sys.dao.SysUserDao.findUsers”);
System.out.println(list);
sqlSession.close();

对于这样的操作,也可以先定义一个接口,然后通过接口类型对象去执行相关操作,例如
package com.project.mybatis.dao;
import java.util.List;
import java.util.Map;

import com.project.mybatis.entity.SysUser;
public interface SysUserDao {
List<Map<String,Object>> findUsers();
int insertObject(SysUser entity);
}

接口定义以后,设置mapper映射文件中的命名空间为这个接口的全类名,例如

<?xml version="1.0" encoding="UTF-8"?> select * from sys_users 基于这个配置文件,实现SQL查询,单元测试方法如下:

public class TestSysUserDao02 {
/*MyBatis 应用中这个工厂需要具备全局唯一性
* ,我们要通过这个工厂创建SqlSession对象,
* 通过sqlsession对象操作数据库
/
private SqlSessionFactory factory;
@Before
public void init()throws IOException{
factory=new SqlSessionFactoryBuilder()
.build(Resources.
getResourceAsStream(“mybatis-config.xml”));
}
@Test
public void testFindEntityUsers(){
//1.通过工厂创建sqlsession对象
SqlSession session=factory.openSession();
//2.通过sqlsession对象访问数据库
SysUserDao dao=
//底层系统会基于SysUserDao接口创建一个实现类
//底层会访问哪个映射文件如何确定?(基于类全名查找命名空间)
session.getMapper(SysUserDao.class);
List list=
//要访问的方法要与mapper文件中的元素id一致
dao.findEntityUsers(“1%”,“username”);
for(SysUser user:list){
System.out.println(user);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值