文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MyBatis中DAO代理怎么使用

2023-06-29 22:22

关注

这篇文章主要介绍了MyBatis中DAO代理怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis中DAO代理怎么使用文章都会有所收获,下面我们一起来看看吧。

DAO代理实现数据库操作

1、去掉Dao接口实现类

MyBatis中DAO代理怎么使用

2、getMapper获取代理对象

只需调用 SqlSession 的 getMapper()方法,即可获取指定接口的实现类对 象。该方法的参数为指定 Dao 接口类的 class 值。

SqlSession session = factory.openSession();StudentDao dao = session.getMapper(StudentDao.class);

使用工具类

StudentDao studentDao = MyBatisUtil.getSqlSession().getMapper(StudentDao.class);

getMapper()创建的对象,是代替我们自己创建的 StudentDaoImpl 类

3、使用 Dao 代理对象方法执行 sql 语句

select方法进行查询

@Testpublic void testSelect() throws IOException { final List<Student> studentList = studentDao.selectStudents(); studentList.forEach( stu -> System.out.println(stu));}

insert方法进行插入

@Testpublic void testInsert() throws IOException { Student student = new Student(); student.setId(1006); student.setName("林浩"); student.setEmail("linhao@163.com"); student.setAge(26); int nums = studentDao.insertStudent(student); System.out.println("使用 Dao 添加数据:"+nums);}

4、深入理解参数

从 java 代码中把参数传递到 mapper.xml 文件。

parameterType

parameterType: 接口中方法参数的类型, 类型的完全限定名或别名。这个属 性是可选的,因为 MyBatis 可以推断出具体传入语句的参数,默认值为未设置 (unset)。接口中方法的参数从 java 代码传入到 mapper 文件的 sql 语句。

<select>,<insert>,<update>,<delete>都可以使用 parameterType 指定类型。

eg:

<delete id="deleteStudent" parameterType="int"> delete from student where id=#{studentId}</delete>等同于<delete id="deleteStudent" parameterType="java.lang.Integer"> delete from student where id=#{studentId}</delete>

一个简单参数

Dao 接口中方法的参数只有一个简单类型(java 基本类型和 String),占位符 #{ 任意字符 },和方法的参数名无关。

接口方法

Student selectById(int id);

mapper文件

<select id="selectById" resultType="com.bjpowernode.domain.Student"> select id,name,email,age from student where id=#{studentId}</select>

#{studentId} , studentId 是自定义的变量名称,和方法参数名无关。

测试方法

@Testpublic void testSelectById(){ //一个参数  Student student = studentDao.selectById(1005); System.out.println("查询 id 是 1005 的学生:"+student);}

使用@Param

当 Dao 接口方法多个参数,需要通过名称使用参数。 在方法形参前面加 入@Param(“自定义参数名”),mapper 文件使用#{自定义参数名}。

例如定义 List<Student> selectStudent( @Param(“personName”) 

String name ) { … } 

mapper 文件 select * from student where name = 

#{ personName}

接口方法

List<Student> selectMultiParam(@Param("personName") String name, @Param("personAge") int age);

Mapper文件

<select id="selectMultiParam" resultType="com.bjpowernode.domain.Student"> select id,name,email,age from student where name=#{personName} or age =#{personAge}</select>

测试方法

@Testpublic void testSelectMultiParam(){ List<Student> stuList = studentDao.selectMultiParam("李力",20); stuList.forEach( stu -> System.out.println(stu));}

使用对象

使用 java 对象传递参数, java 的属性值就是 sql 需要的参数值。 每一个属性就是一个参数。

语法格式: #{ property,javaType=java 中数据类型名

jdbcType=数据类型名称 } javaType, jdbcType 的类型 MyBatis 可以检测出来,一般不需要设置。常用格式 #{ property }

MyBatis中DAO代理怎么使用

 创建保存参数值的对象 QueryParam

package com.bjpowernode.vo; public class QueryParam { private String queryName; private int queryAge; //set ,get 方法}

接口方法

List<Student> selectMultiObject(QueryParam queryParam);

Mapper文件

<select id="selectMultiObject" resultType="com.bjpowernode.domain.Student"> select id,name,email,age from student where name=#{queryName} or age =#{queryAge}</select>或<select id="selectMultiObject" resultType="com.bjpowernode.domain.Student"> select id,name,email,age from student where name=#{queryName,javaType=string,jdbcType=VARCHAR} or age =#{queryAge,javaType=int,jdbcType=INTEGER}</select>

测试方法

@Testpublic void selectMultiObject(){ QueryParam qp = new QueryParam(); qp.setQueryName("李力"); qp.setQueryAge(20); List<Student> stuList = studentDao.selectMultiObject(qp); stuList.forEach( stu -> System.out.println(stu));}

关于“MyBatis中DAO代理怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MyBatis中DAO代理怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯