博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis的mapper接口代理使用的三个规范
阅读量:7240 次
发布时间:2019-06-29

本文共 4144 字,大约阅读时间需要 13 分钟。

2018-07-29

1.什么是mapper代理接口方式?

MyBatis之mapper代理方式。mapper代理使用的是JDK的动态代理策略

2.使用mapper代理方式有什么好处

使用这种方式可以不用写接口的实现类,免除了复杂的方法,使得代码更加清晰易懂

按照以前的DAO 开发模式 ,我们有一个写了一个接口类 然后需要写这接口的实现类

现在就是MyBATis 通过帮我们生成了这个实现了。而我们要做的就是配置好这实现类的 XML。

也就是说 使用了mybatis 开发中不需要写数据库的实现类 而只要实现接口 所有的实现又mybatis的配置文件去生成。

3.使用mappper代理方式要遵循什么规范?

1.接口名要和对应的映射文件的名称相同(只是后缀名不同)

2.接口的全限定名要和mapper映射文件的namespace 一致

3.接口中的方法名要和mapper映射文件中的唯一标识的id相同

4.要在同一目录下面(可以创建一个源文件夹,然后创建一个和src目录下面相同的包,已达到xml和接口分离的作用)

5: 接口的方法返回类型和mapper 映射文件返回的类型一致

6 接口的方法参数类型和mapper 映射文件输入类型要一致

For Example

1.建立一个web项目

2.在webRoot文件夹下面lib中导入mybatis的jar、log4j的jar(日志文件)、mysql-connection的jar(mysql连接数据库的jar包),使用什么数据库就导入什么jar包

注意:要添加到构建路径中才能够被使用

3.创建一个源文件夹用于存放mybatis的主配置文件和接口的映射文件(要创建和src目录下面的接口的包名相同)、还有properties文件(键值对文件)

注意:配置文件如果要用于配置数据库一定要写正确不能多加空格,字符,写得颠三倒四

  如com.mysql.jdbc.Driver 不能写成com.jdbc.mysql.Driver

  也不能多加一个点,少一个点

config|--com.imp

         |--main_config.xml

    |--main_config.properties

 

1 driver=com.mysql.jdbc.Driver2 url=jdbc\:mysql\://localhost\:3306/myweb?characterEncoding\=utf-8&&useSSL=false3 username=root4 password=root
main_config.xml

 

 

4.写一个对应数据库的pojo类(com.pojo)

package com.pojo;public class Students {    /**     * 学号 姓名 年龄     */    private int id;    private String name;    private int age;    /**     * 默然的构造函数     */    public Students() {        super();        // TODO 自动生成的构造函数存根    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    }
Students.java

 

5.写一个接口类(com.imp)

1 package com.imp; 2  3 import java.util.List; 4  5 import com.pojo.Students; 6  7 public interface IStudents { 8      9     List
selectAll();10 11 }
IStudents.java

 

6.写一个和接口名相同的映射文件(xml)(com.imp)

1 
2 3
4
5
8 9 10
IStudents.xml

 

7.写一个工具类(com.util)

1 package com.util; 2  3 import java.io.IOException; 4 import java.io.InputStream; 5  6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSession; 8 import org.apache.ibatis.session.SqlSessionFactory; 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;10 11 public class DataBaseManager {12     13 14     /**15      * 使用的是静态方法16      * @return17      * @throws IOException18      */19     public static SqlSession getSqlSession() throws IOException{20         //加载配置文件21         InputStream inputStream = Resources.getResourceAsStream("main_config.xml");22         //创建会话工厂23         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);24         //开启会话25         SqlSession sqlSession = sqlSessionFactory.openSession();26         27         28         return sqlSession;29     }30 31 }
DataBaseManager .java

 

8.写一个测试类

1 package com.test; 2  3 import java.io.IOException; 4 import java.util.List; 5 import org.apache.ibatis.session.SqlSession; 6 import org.junit.Test; 7 import com.imp.IStudents; 8 import com.pojo.Students; 9 import com.util.DataBaseManager;10 11 public class TestBasic {12     @Test13     public void testSelectAll() throws IOException{14         //获取sqlsession15         SqlSession sqlSession = DataBaseManager.getSqlSession();16         System.out.println(sqlSession);17         18         IStudents mapper =sqlSession.getMapper(IStudents.class);19         List
all = mapper.selectAll();20 for (Students students : all) {21 System.out.println(students.getId()+students.getName()+students.getAge());22 }23 24 }25 }
TestBasic .java

 

9.最后生成的目录如下图所示

 

 

转载于:https://www.cnblogs.com/xyblogs/p/8718310.html

你可能感兴趣的文章
requests bs4 爬取 资讯 图片
查看>>
zabbix 调用python脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)...
查看>>
LeetCode:453. Minimum Moves to Equal Array Elements
查看>>
python之logging模块
查看>>
JDBC(1)——获取数据库连接
查看>>
并查集专题2
查看>>
ASP.NET中的验证控件
查看>>
zookeeper3.4.5+Hbase1.2.6安装教程
查看>>
20160811
查看>>
Redis数据库概述
查看>>
如何管理团队知识?快速搭建一套管理工具
查看>>
BZOJ 1191: [HNOI2006]超级英雄Hero
查看>>
[JLOI2014]天天酷跑
查看>>
P2167 [SDOI2009]Bill的挑战
查看>>
1.10版的Django对应的后台编辑器DjangoUeditor
查看>>
shell命令之---检测磁盘空间
查看>>
蓝桥杯 【基础练习】 十六进制转十进制
查看>>
[Code+#3]寻找车位
查看>>
04java基础
查看>>
10.30 开课一个月零二十六天 (PHP数据库修改)
查看>>