Mybatis基础
[TOC]
概念
MyBatis是一个ORM持久层的框架
持久层:对数据库进行操作的一层
ORM:对象关系映射规范
面试题:MyBatis相较于jdbc的优点
jdbc重复性代码较多,mybatis不需要去写加载数据库驱动的那些步骤
jdbc封装代码比较麻烦,mybatis自动封装
MyBatis的使用
导包
这里我创建的是普通Java项目,没有通过Maven管理,如果是Maven管理只需要加入一句依赖即可
1 | <dependency> |
配置核心文件
在resources中新建文件mybatis-config.xml
1 |
|
db.properties
1 | jdbc.driverClassName=com.mysql.jdbc.Driver |
然后配置相应的mybatisMapper文件
1 |
|
我是将它放在dao层的实现层下面
利用Mybatis进行CRUD
准备好实体类Product
1 | package com.ifueen.mybatis.domain; |
Dao层接口
1 | public interface IProductDao { |
然后实现类
1 | public class ProductDaoImpl implements IProductDao { |
在此之前我将创建SqlSession对象抽取出来封装成了一个工具类
MyBatisUtil
1 | public enum MyBatisUtil { |
创建测试类进行测试
1 | public class ProductDaoImplTest { |
MyBatis高级查询
上面我们进了最基本的CRUD,现在来看看通过Mybatis实现高级查询
批量删除
1 | <!-- 批量删除 --> |
然后测试
1 | /** |
批量增加
1 | <!-- 批量添加 --> |
然后测试
1 | /** |
模糊查询
1 | <!-- 高级查询 --> |
测试
1 | /** |
面试题:$和#的区别?
$在mybais中代表拼接的意思,将传入的数据之间显示成为sql语句
比如:select *from user where id =${id}传给id的值为username,username的值为11
相当于select * user where id = username
#是取后面的值
比如:select *from user where id =${id}传给id的值为username,username的值为11
相当于select * user where id = 11
大多数情况都是用#
日志框架Log4j使用
将Log4j包导入后在resources中进行配置
log4j.properties
1 | log4j.rootLogger=ERROR, stdout |
然后再次运行的时候就可以看见效果,下面拿查询单个实体举例