特性
持久层框架:负责将数据保存到数据库
JavaEE三层框架:表现层:页面;业务层:逻辑;持久层:数据持久化
将硬编码(数据库配置信息。或者SQL语句)写入配置文件
用注解的方式会更加方便
//这里调用的是sqlSession的自带方法,加载UserMapper.xml中的id SqlSession sqlSession = MybatisUtils.getSqlSession(); sqlSession.selectList("com.mf.mapper.UserMapper.getUserList"); //这里用的是Mapper代理的方式 SqlSession sqlSession = MybatisUtils.getSqlSession(); //获取到Mapper的类,类中的方法和mapper.xml中的id名一一对应 UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
在resources下创建多层包结构,用/的方式创建,不要用点. 来分割
插件:MybatisX 非常方便
红色头绳的小鸟是xml映射文件,蓝色头绳是Mapper类
完成增删改查功能
考虑三件事情,
查询数据时:写什么样的sql语句,需要什么参数,返回什么结果。
问题:resultMap
数据库表的字段名称 和实体类的属性名称不一样,则不能自动封装数据
1.在sql种对不一样的名称取别名,用as
2.使用resultMap
id:唯一标识
type:映射类型
3.配置成驼峰命名法(弹幕说的)
参数占位符
1)#{} 会在编译的时候将其替换成?,可以防止SQL注入
2)${} 拼sql 会存在SQL注入问题
3)参数传递的时候用#{}
表名和列名不固定的时候,可以用${}
4)参数类型:parameterType 可以省略
5)特殊字符的处理
用转义符号
用CDATA
select * from outline where outline_id=#{outlineId}优选
条件查询
注意sql语句的书写
1)精准查询 =
2)模糊查询 like
注意参数传递,多个参数如何设置
动态条件查询
在条件查询前判断值是不是空
单条件动态查询
添加修改数据
主键返回
动态修改:使用<set>标签
删除数据
批量删除:用id数组 要需要<foreach>标签
collection="array"