mybatis的mapper接口代理使用的三个规范
2018-06-18 02:19:36来源:未知 阅读 ()
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 映射文件输入类型要一致
举个例子
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.Driver 2 url=jdbc\:mysql\://localhost\:3306/myweb?characterEncoding\=utf-8&&useSSL=false 3 username=xzt 4 password=xzt521
<?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" > <configuration> <properties resource="main_config.properties"></properties> <typeAliases> <package name="com.pojo"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <package name="com.imp"/> </mappers> </configuration>
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; } }
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<Students> selectAll(); 10 11 }
6.写一个和接口名相同的映射文件(xml)(com.imp)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <!-- 命名空间要和接口的全限定名相同 --> 4 <mapper namespace="com.imp.IStudents"> 5 <select id="selectAll" resultType="students"> 6 select * from students 7 </select> 8 9 10 </mapper>
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 * @return 17 * @throws IOException 18 */ 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 }
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 @Test 13 public void testSelectAll() throws IOException{ 14 //获取sqlsession 15 SqlSession sqlSession = DataBaseManager.getSqlSession(); 16 System.out.println(sqlSession); 17 18 IStudents mapper =sqlSession.getMapper(IStudents.class); 19 List<Students> all = mapper.selectAll(); 20 for (Students students : all) { 21 System.out.println(students.getId()+students.getName()+students.getAge()); 22 } 23 24 } 25 }
9.最后生成的目录如下图所示
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:微服务架构下分布式事务方案
- Spring系列.ApplicationContext接口 2020-06-11
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
- 天哪!手动编写mybatis雏形竟然这么简单 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash