- 前言
- 一、Mybatis是什么?
- 二、Mybatis的快速入门
- 1.添加Mybatis的jar包
- 2.创建student 数据表
- 3.编写Student实体类
- 4.编写StudentMapper.xml映射文件
- 5. 编写MyBatis核心文件
- 6. 测试
- 三、接口代理实现Dao
- 1.代理开发方式介绍
- 2.编写StudentMapper接口
- 3.测试代理方式
- 四、注解开发
- 1.创建mapper接口
- 2.测试类
- 总结
前言
原始JDBC的操作遇到的问题
1.频繁创建和销毁数据库的连接会造成系统资源浪费从而影响系统性能。
2. sql 语句在代码中硬编码,如果要修改 sql 语句,就需要修改 java 代码,造成代码不易维护。
3. 查询操作时,需要手动将结果集中的数据封装到实体对象中。
4. 增删改查操作需要参数时,需要手动将实体对象的数据设置到 sql 语句的占位符。
本文将介绍Mybatis的快速入门、接口代理实现Dao以及Mybatis的注解开发
一、Mybatis是什么?
mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,
而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
- mysql-connector-java-5.1.37-bin.jar
- mybatis-3.5.3.jar
- log4j-1.2.17.jar
public class Student {
private Integer id;
private String name;
private Integer age;
//省略get个set方法
}
4.编写StudentMapper.xml映射文件
5. 编写MyBatis核心文件
6. 测试
下面展示一些 内联代码片。
public class StudentTest01 {
@Test
public void selectAll() throws Exception{
//1.加载核心配置文件
InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");
// InputStream is = StudentTest01.class.getClassLoader().getResourceAsStream("MyBatisConfig.xml");
//2.获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//3.通过SqlSession工厂对象获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.执行映射配置文件中的sql语句,并接收结果
List list = sqlSession.selectList("StudentMapper.selectAll");
//5.处理结果
for (Student stu : list) {
System.out.println(stu);
}
//6.释放资源
sqlSession.close();
is.close();
}
}
三、接口代理实现Dao
1.代理开发方式介绍
Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由Mybatis 框架根据接口
定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。
Mapper 接口开发需要遵循以下规范:
- Mapper.xml文件中的namespace与mapper接口的全限定名相同
- Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
- Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
- Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
public Student selectById(Integer id) {
Student stu = null;
SqlSession sqlSession = null;
InputStream is = null;
try {
//1.加载核心配置文件
is = Resources.getResourceAsStream("MyBatisConfig.xml");
//2.获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new
SqlSessionFactoryBuilder().build(is);
//3.通过工厂对象获取SqlSession对象
sqlSession = sqlSessionFactory.openSession(true);
//4.获取StudentMapper接口的实现类对象
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); //
StudentMapper mapper = new StudentMapperImpl();
//5.通过实现类对象调用方法,接收结果
stu = mapper.selectById(id);
} catch (Exception e) {
} finally {
//6.释放资源
if (sqlSession != null) {
sqlSession.close();
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//7.返回结果
return stu;
}
四、注解开发
1.创建mapper接口
public interface StudentMapper {
//查询全部
@Select("SELECT * FROM student")
public abstract List selectAll();
//新增操作
@Insert("INSERT INTO student VALUES (#{id},#{name},#{age})")
public abstract Integer insert(Student stu);
//修改操作
@Update("UPDATE student SET name=#{name},age=#{age} WHERe id=#{id}")
public abstract Integer update(Student stu);
//删除操作
@Delete("DELETE FROM student WHERe id=#{id}")
public abstract Integer delete(Integer id);
}
2.测试类
public class Test01 {
@Test
public void selectAll() throws Exception {
//1.加载核心配置文件
InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");
//2.获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new
SqlSessionFactoryBuilder().build(is);
//3.通过工厂对象获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//4.获取StudentMapper接口的实现类对象
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
//5.调用实现类对象中的方法,接收结果
List list = mapper.selectAll();
//6.处理结果
for (Student student : list) {
System.out.println(student);
}
//7.释放资源
sqlSession.close();
is.close();
}
}
注意:
修改MyBatis的核心配置文件,我们使用了注解替代的映射文件,所以我们只需要加载使用了注解
的Mapper接口即可
总结
注解已经够详细,该文章方便快速使用Mybatis、介绍接口代理实现Dao以及Mybatis的注解开发,可以根据需求灵活使用
暑期编程PK赛 得CSDN机械键盘等精美礼品!


