mybatis是一个基于java的持久层框架 , 通过操作对象来实现对数据库的操作 , 使得开发者只需要关注sql语句 , 而不需要再区使用传统的jdbc创建连接等繁琐的事情 , 使用到的理念就是ORM
ORM ---->object relatonal mapping 对象关系映射
这种理念简单来说就是 : 把数据库表的字段与实体类以及实体类的属性相对应,通过操作实体类就实现了操作数据库表的目的
创建maven项目 , 需要导入的依赖有三个 :
在运行项目时可能遇到的一个问题就是资源导出失败的问题 , 需要在build中配置一下
如果用到了上面的写法 , 也就是没有直接配置数据库连接池的相关信息 ,通过引入外部的db.properties文件 , 需要用的标签就是 properties
连接数据库的过程中有两步 , 第一步就是上面提到的配置核心配置文件 , 配置数据库的参数 , 第二步就是利用idea来连接数据库 , 连接数据库存在的问题就是时区问题 , 通过下面的办法来解决
dao包下面对应的就是实现pojo与mysql关联的部分 interface 和 mapper 文件
别名 : 解决resttype 和 parametertypr 对应的实体类路径过长 , 在核心配置问文件中配置
两种方式:
通过扫描包实现的别名 , 是该类名的小写 , 如果需要自定义 , 需要在该实体类的上方加@Alias(“自定义别名”)
映射器mappers三种方式 :
模糊查询 : 与普通的增删改查不同的地方在于 sql语句中的 where id like #{value} , 以及测试类中的==("%id%")==
在sql语句中增加like , 同时在测试类中进行参数传递时需要加==%%==解决sql注入的安全隐患
属性名和字段名不一致使用resultMap :
resultMap id=“该map的标识” type=“对应的实体类”
result column=“数据库字段” property=“实体类属性”
select resultMap=“id”
另一种方式就是在写sql语句时使用as select 实体类属性名 as 数据库字段名 from
日志 LOG4J
导入LOG4J的依赖 , 创建log4j.properties , 在mybatis-config中配置 , 创建日志对象
static Logger logger = Logger.getLogger(UserDaoTest.class);
分页 : 能够减少数据的处理量 , limit 起始位置 , 检索的行数 , 只有一个数字 limit 5 , 返回从第一行开始的5条数据
直接在interface中利用注解实现sql语句 , 直接在方法上面使用注解 , 也需要在mybatis-config.xml中注册mapper , 使用的是通过class注解
@Select(“select * from mybatis.user”)
List getUserList();
对数据库进行操作时需要commit和close sqlSession , 可以在创建工具类的时候就开启自动提交
SqlSession sqlSession=sqlSessionFactory.openSession(true);
在接口的方法中使用==@Param(“sql接收的参数名”)==
@Update(“update mybatis.user set username=#{name} where id=#{id}”)
int updateUserByParam(@Param(“id”) int id, @Param(“name”) String username);
复杂查询 : 多对一查询 , 一对多查询
动态sql : if , where , set , foreach
缓存 : 一级缓存 二级缓存