-
MapperProxy implements InvocationHandler{ -----------@Override -----------invoke(Object obj,Method mth){ --------------mth.invoke(); -------------} -----------} Proxy.newProxyInstance(ClassLoader classloader,Interface.class,MapperProxy对象) 因为sqlSession.getMapper()==Proxy.newProxyInstance(ClassLoader ------------------------------classloader,Interface.class,MapperProxy对象) 所以IMessage iMessage=proxy.newProxyInstance() ---------iMessage.queryMessageList()=MapperProxy.invoke()查看全部
-
使用原始的方法开发dao时,在具体的实现类中,调用sqlSession.selectList()时需要传递两个参数,根据第一个参数在配置文件中找具体的sql语句,这里需要注意两个风险,①编码中的namespace 与配置文件中的namespace 一致,②编码中引用的id与配置文件中的id也要一致,手写就会有很大的风险,㈢就是第二个参数的问题,selectList方法中传入的参数是object,而配置文件中是一个pojo对象,那么在编写代码的时候,传递的参数是其他的类型,编译器也不会提示错误,只有程序运行起来的时候,才会出错,④还有返回值,编码中是通过泛型来约束list的,至于list中是什么泛型,编译器都是可以通过的,在配置文件中的返回类型使用resultMap来约束的。 规避以上四个风险的手段,mybatis称之为接口是编程,需要遵循以下规范: 1、 类的映射:使用接口类的全限定名作为配置文件的namespace,完成类与配置文件的对应关系。 2、 方法名:接口方法名与配置文件中将要执行的sql语句的id一样,这样就完成了方法调用的映射。 3、 参数类型:接口方法的输入参数类型和配置文件中sql的parameterType的类型相同 4、 返回值类型:接口方法的返回值类型和配置文件的resultMap的类型相同 具体实现方法:①将调用的接口类传给sqlSession.getMapper(IMessage.class)方法,返回类型就是这个传入参数的类型IMessage,但是这个时候就不在是接口,而是一个具体的实现,调用接口的方法,就可以得到与映射文件一一对应的参数类型。查看全部
-
跟着这位老司机,终于看懂了一次源码。查看全部
-
jdbc批量插入新增数据的方法实现查看全部
-
使用正则表达式对前端传过来的页码进行校验查看全部
-
实现基于mybatis拦截器的分页拦截查看全部
-
Mybatis特点: 1.SQL语句与代码分离 优点:便于管理和维护 缺点:不便于调试,需要借助日志工具获得信息 2.用标签控制动态SQL的拼接 优点:用标签代替编写逻辑代码 缺点: 拼接复杂SQL语句时,没有代码灵活,比较复杂 3. 结果集与Java对象的自动映射 优点:保证名称相同即可自动映射 缺点:对开发人员所写的SQL依赖性很强 4. 编写原生SQL 优点:接近JDBC,很灵活 劣势:对SQL语句依赖程度很高查看全部
-
Mybatis在案例中呈现的特点3查看全部
-
Mybatis在案例中呈现的特点2查看全部
-
Mybatis在案例中呈现的特点一查看全部
-
问题二查看全部
-
问题一查看全部
-
访问数据库类查看全部
-
修改DAO层查看全部
-
Mybatis批量新增对应配置文件的接口查看全部
举报
0/150
提交
取消