天天看点

Mybatis,配置文件头,原始JDBC问题,代理开发

mybatis配置文件的头部信息

configure配置文件头

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
           

mapper映射文件头

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
           

原始JDBC开发中存在的问题:

List<Emp> empList = new ArrayList<>();
//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//获取连接对象
Connection connection = DriverManager.getConnection(url,username,password);
//预编译SQL语句
String sql = "select ..... where eno=? and ename=?";
PreparedStatement statement = connection.prepareStatement(sql);
//设置参数
ps.setInt(1,16);
ps.setString(2,"haha");
//执行SQL
ResultSet resultSet = ps.executeQuery();
//处理结果集
while(resultSet.next()){
  Emp emp = new Emp();
  emp.setInt(resultSet.getInt(1));
  ...
  empList.add(emp);
}
//关闭连接对象
close(connection,statement,resultSet);
           

1.频繁打开及关闭数据库操作,影响数据的性能

​ 解决方案:使用数据库连接池进行管理

2.硬编码(固定的数字或字符等)过多,影响后期的维护

​ 例如:if(1>2){},int a=1,b=2;if(a>b){}

​ 解决方案:直接将相关的常量,用一个统一的文件(xml)进行管理

3.关系映射比较麻烦,编码冗余,不利于后期的维护

​ 解决方案:提前指定映射关系(xml)

4.对SQL相关的操作,一旦改动之后,整个java项目都需要重新编译,影响系统性能

​ 解决方案:把数据库相关的操作抽离出来(xml)

Mapper代理开发

dao层开发存在的问题:

通过dao层及其实现类的方式在进行Mybatis的增删改查时存在的问题(参考dao实现类代码进行分析)

1.仍然存在硬编码的问题(指定查询的statementid【test.queryEmpById】)

2.功能实现的过程中,对于输入的参数类型以及返回值类型都是Object类型,不严谨

3.代码实现时存在大量的重复书写的问题

Mapper代理开发规范:

1.要求接口和映射文件在同一个路径下

2.要求接口名与映射文件名保持一致

3.要求接口中的方法名与映射文件中的id名保持一致

4.要求接口中的参数类型与映射文件中的参数类型保持一致

5.要求接口中的方法返回值类型与映射文件中的返回值类型保持一致

6.要求映射文件中的namespace的值要与接口的类签名(包名+类名)保持一致

继续阅读