mybatis CRUD之Mapper代理开发模式(接口实现 不需要实现类)
2018-03-11 15:16
656 查看
mybatis CRUD之Mapper代理开发模式(接口实现 不需要实现类)
mybatis中文文档点这里环境配置:
1.0 mysql数据库驱动包
2.0 mybatis 3.4.5jar包
3.0 jdk7.0以上
开发工具:eclipse
navicat
mysql5.7
1.0 建表 表名t 结构如下
2.0 创建javaBean 模型 对应数据库表
package com.ccut.DAO; public class T { private int id; private String name; 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; } }
3.0 mybatis 配置文件 Configuration.xml 内容如下
<?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> <typeAliases> <!-- JAVA类对应的别名 --> <typeAlias alias="T" type="com.ccut.DAO.T"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POO feb5 LED"> <!-- //设置驱动 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <!-- //链接 --> <property name="url" value="jdbc:mysql://localhost:3306/xyd" /> <!-- //用户名 --> <property name="username" value="root"/> <!-- //密码 --> <property name="password" value="xuyandong"/> </dataSource> </environment> </environments> <mappers> <!-- //映射文件地址 --> <mapper resource="com/ccut/database/User.xml"/> </mappers> </configuration>
4.0 mybatis 映射文件 User.xml
<?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"> <mapper namespace="com.ccut.database.Mybatis_CRUD"> <!-- 按id查询 --> <select id="selectTByID" parameterType="String" resultType="T"> select * from t where name = #{name} </select> <!-- 插入 --> <insert id="insertTByID" parameterType="T"> insert into t(id,name) values(#{id},#{name}) </insert> <!-- 修改 --> <update id="updateTByID" parameterType="T"> update t set name = #{name} where id=#{id} </update> <!-- 删除 --> <delete id="deleteTByID" parameterType="int"> delete from t where id = #{id} </delete> </mapper>
注意 mapper namespace="com.ccut.database.Mybatis_CRUD" 中namespace的值要与下面的接口路径一致
5.0 创建Mapper 接口 Mybatis_CRUD.java
规范 :mapper接口的全限定名要和mapper映射文件的namespace的值相同。
mapper接口的方法名称要和mapper映射文件中的statement的id相同。
mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致。
package com.ccut.database; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.ccut.DAO.T; public interface Mybatis_CRUD { public void deleteTByID(int id); public void updateTByID(T t); public void insertTByID(T t); public List<T> selectTByID(String name); }
函数名要与4.0中的id值一样
6.0 编写 mybatis 工具类 MybatisUtil .java
package com.ccut.mybatisUtil; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybatisUtil { private static Reader reader; private static SqlSessionFactory factory; private static String cfg = "Configuration.xml"; private static void setSqlSessionFactory(){ try { //读取配置文件 reader = Resources.getResourceAsReader(cfg); factory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("找不到文件!"); e.printStackTrace(); } } public static SqlSession getSession(boolean yes){ setSqlSessionFactory(); return factory.openSession(yes); } }
工程目录结构:
7.0 编写测试类 Main.java 测试删除
删除前:运行下面测试类:
package com.ccut.test; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.springframework.beans.factory.annotation.Autowired; import com.ccut.DAO.T; import com.ccut.database.Mybatis_CRUD; import com.ccut.mybatisUtil.MybatisUtil; public class Main { public static void main(String[] args) { SqlSession session = MybatisUtil.getSession(true); Mybatis_CRUD mapper = session.getMapper(Mybatis_CRUD.class); mapper.deleteTByID(1); session.close(); } }
查询数据库表的变化:
可知 id= 1 的记录已经被删除
接着上面的表记录,下面我们增加一条记录:只需要把上面的Main.java 改为如下:
package com.ccut.test; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.springframework.beans.factory.annotation.Autowired; import com.ccut.DAO.T; import com.ccut.database.Mybatis_CRUD; import com.ccut.mybatisUtil.MybatisUtil; public class Main { public static void main(String[] args) { SqlSession session = MybatisUtil.getSession(true); Mybatis_CRUD mapper = session.getMapper(Mybatis_CRUD.class); //mapper.deleteTByID(1); T t = new T(); t.setId(1); t.setName("xyda"); mapper.insertTByID(t); session.close(); } }
结果如下:
由此可知数据库记录添加成功 测试通过
接下来测试修改 数据库表还用上面执行过插入记录 接下来我们把 id= 1处的name = xyda 改为 name= xyd
接着改Main.java
package com.ccut.test; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.springframework.beans.factory.annotation.Autowired; import com.ccut.DAO.T; import com.ccut.database.Mybatis_CRUD; import com.ccut.mybatisUtil.MybatisUtil; public class Main { public static void main(String[] args) { SqlSession session = MybatisUtil.getSession(true); Mybatis_CRUD mapper = session.getMapper(Mybatis_CRUD.class); //mapper.deleteTByID(1); T t = new T(); // t.setId(1); // t.setName("xyda"); // mapper.insertTByID(t); t.setId(1); t.setName("xyd"); mapper.updateTByID(t); session.close(); } }
执行后的数据库表结构(懒得截图直接用前面的图片 )
修改成功!
接下来测试查询 ,由映射文件可知查询是按名字查询的 所以会出现两条记录 所以用List 代码如下:
package com.ccut.test; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.springframework.beans.factory.annotation.Autowired; import com.ccut.DAO.T; import com.ccut.database.Mybatis_CRUD; import com.ccut.mybatisUtil.MybatisUtil; public class Main { public static void main(String[] args) { SqlSession session = MybatisUtil.getSession(true); Mybatis_CRUD mapper = session.getMapper(Mybatis_CRUD.class); //mapper.deleteTByID(1); T t = new T(); // t.setId(1); // t.setName("xyda"); // mapper.insertTByID(t); // t.setId(1); // t.setName("xyd"); // mapper.updateTByID(t); List<T> a = mapper.selectTByID("xyd"); for(T v:a){ System.out.println(v.getId()+"-----"+v.getName()); } session.close(); } }
结果:
同上面数据库表中的数据一样 所以也ok!
完整项目地址
相关文章推荐
- SSM框架系列学习总结5之Mybatis实现基本CRUD和代理开发模式
- 如何整合Spring和Mybatis的思路分析(使用面向接口的mapper代理,不用再去写Dao的实现类)
- mybatis开发之mapper接口开发(无需实现类)
- [mybatis]Mapper接口代理开发
- Mybatis Mapper动态代理方法 即 只写Dao接口 不谢Dao的实现类
- Mybatis之使用mapper代理方法开发dao(程序员只需要写mapper接口(dao接口))(12)
- Mybatis mapper代理开发方法实现增删改查
- Mybatis 源码解析二、Mapper接口的代理实现过程 MapperScannerConfigurer 解析
- SprignMVC+myBatis整合+mybatis源码分析+动态代理实现流程+如何根据mapper接口生成其实现类
- mybatis的mapper代理方法开发实现用户的增删改查
- 10_Mybatis开发Dao方法——mapper代理实现
- Mybatis使用Mapper代理的方式生成DAO接口的实现类对象
- Mybatis学习(2)原始dao开发和使用mapper接口代理开发
- JavaEE_Mybatis_SpringMVC_整合开发_lesson2_Mapper代理开发方式
- mybatis实战教程之开发环境搭建、以接口的方式编程、实现数据的增删改查
- fiddler实现后端接口 mock(不需要修改开发代码)
- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
- iphone开发之通过代理模式实现自定义控件——代码示例图片库的处理
- Mybatis3源码分析(21)-Mapper实现-动态代理
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson3_ Mapper代理的开发方式