什么是MyBatis
MyBatis是持久层框架,用于简化JDBC开发
持久层
- 负责将数据保存到数据库
- JavaEE三层架构:表现层,业务层,持久层
框架
是一个半成品软件,是一套可重用的,通用的,软件基础代码模型
在框架的基础之上构建软件编写更高效,规范,通用
JDBC缺点
硬编码:注册驱动,获取连接,SQL语句
操作繁琐:手动设置参数,手动封装结果集
SqlSession
org.apache.itatis.session.SqlSession:构建者对象接口,用于执行SQL,管理事务,接口代理
相关API
Resources
- 加载资源的工具类
SqlSessionFactoryBuilder
- 获取SqlSessionFactory工厂对象的功能类
SqlSessionFactory
- 获取SqlSession构建者对象的功能类
- 指定事务的提交方式
SqlSession
- 构建者对象接口
- 执行SQL
- 管理事务
- 接口代理
MyBatis映射配置文件
mapper:核心根标签
namespace属性:名称空间
select:查询功能的标签
id属性:唯一标识
resultType属性:指定结果映射对象类型
parameterType属性:指定参数映射对象类型
查询功能
<select>查询功能标签
属性:
- id:唯一标识
- resultType:指定参数映射的对象类型
- resultType:指定结果映射的对象类型
SQL获取参数:
- #{属性名}
@Test
public void selectById() throws IOException {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("UserConfig.xml");
//获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
//通过SqlSession工厂对象获取SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行映射配置文件中的sql语句,并接收结果
Object user = sqlSession.selectOne("selectById", 1);
//处理结果
System.out.println(user);
//释放资源
sqlSession.close();
is.close();
}
新增功能
<insert>:新增功能标签
属性
- id:唯一表示
- resultType:指定结果映射的对象类型
- parameterType:指定参数映射的对象类型
SQL获取参数
- #{属性名}
@Test
public void insert() throws IOException {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("UserConfig.xml");
//获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
//通过SqlSession工厂对象获取SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession(true);
//执行映射配置文件中的sql语句,并接收结果
User user = new User(5,"1","1","1","1","1","1","1","1","1");
int result=sqlSession.insert("insert",user);
//提交事务
//sqlSession.commit();
//处理结果
System.out.println(result);
//释放资源
sqlSession.close();
is.close();
}
修改功能
<update>:修改功能标签
属性:
- id:唯一标识
- resultType:指定结果映射的对象类型
- parameterType:指定参数映射的对象类型
SQL获取参数
- #{属性名}
@Test
public void update() throws IOException {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("UserConfig.xml");
//获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
//通过SqlSession工厂对象获取SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行映射配置文件中的sql语句,并接收结果
User user = new User(5,"134252345","223461","1","1","1","1","1","1","1");
int result=sqlSession.update("update",user);
//提交事务
sqlSession.commit();
//处理结果
System.out.println(result);
//释放资源
sqlSession.close();
is.close();
}
删除功能
<delect>:删除功能标签
属性
- id:唯一标识
- resultType;指定结果的对象类型
- parameterType:指定参数映射的对象类型
SQL获取参数
- #{属性名}
@Test
public void delete() throws IOException {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("UserConfig.xml");
//获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
//通过SqlSession工厂对象获取SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行映射配置文件中的sql语句,并接收结果
int result=sqlSession.delete("delete",3);
//提交事务
sqlSession.commit();
//处理结果
System.out.println(result);
//释放资源
sqlSession.close();
is.close();
}