Mybatis学习
Mybatis优缺点
详细内容
- 省略了繁琐的建立连接, statement, JDBC相关的处理
- sql写在xml中, 开发人员专注于SQL, 方便优化性能和管理sql语句
- 支持动态sql
- ———缺点———–
- sql工作量大, 字段多, 关联表多是更是如此
- sql依赖于数据库, 可移植性不高
- xml里 id 必须唯一, 导致了DAO中方法不支持重载
1. 内容简介
- Mybatis的入门程序: 实现简单的单表查询
- 不使用mapper代理的入门程序
- 使用mapper代理的入门程序
- 实现简单的增删改查
- 实现模糊查询, 多条件查询, 关联查询
- 源码地址
2. Mybatis入门程序
- mybatis核心配置文件
- 定义了别名, 方便直接使用Bean类名来传参数
- 配置环境: 开发环境, 连接池
- 配置mapper.xml的的地址
- 第一个xml配置文件(非mapper代理): User.xml
- 添加增删改查标签
- 标签里写sql语句
- 第二个xml配置文件(mapper代理接口):UserMapper.xml
- namespace 为 代理接口的全限定名
- id 为映射文件的方法名
- parameterType 为 输入参数的类型, 对应接口方法参数类型
- resultType 为 返回值类型, 对应接口方法返回值类型
- #{id} 为 占位符, id 必须与 pojo对应的属性名一致
3. 简单增删改查实现
- 第一个测试程序:
public static void main(String[] args) throws IOException {
//指定mybatis核心配置文件
String resource = "mybatis-config.xml";
//将这个文件转为流
InputStream is = Resources.getResourceAsStream(resource);
//通过这个流创建SQLSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//通过SQLSessionFactory开启事务
SqlSession sqlSession = factory.openSession();
//执行sql, 方法参数为xml中配置的id
List<User> list = sqlSession.selectList("listUser");
for (User c : list) {
System.out.println(c);
}
}
- 测试CRUD的测试类与这个类似
- 增删改需要sqlSession.comit();, sqlSession.close();用于提交事务, 关闭回话
- 测试代理方法的同上, 具体看代码里