本文共 1749 字,大约阅读时间需要 5 分钟。
Mybatis 的Mapper动态代理开发。
一、首先,需要在res下面新建几个包,包名分别为mapper,model(pojo),test,新建一个xml文件,名为sqlMapconfig。 二、目录:在包下面建立相应的文件。 1.mapper,这一个类别相当于dao+daoimpl层,里面包含“表名”mapper.java+“表名”mapper.xml两个文件,用于实现数据的增删改查。 2.model层是数据库中表的信息,后面可用逆向工程直接生成,里面还可以包含包装类QueryVo,用于数据的查询。 3.测试类是编写一个Junit测试来实现对数据库数据的简单查询。 4.sqlMapconfig,用于连接数据池,用来注入mapper文件所在位置。三、详解
1.mapper 拿用户订单举例。 UserMapper.java是一个接口,里面是一些抽象方法,类似于dao层UserMapper.xml文件是将这些方法实现,相当于Dao.Impl层,但是又不完全是,因为它需要遵循四个原则,见上图,只有名称相同了,才能进行动态代理开发。
在编写xml文件之前,需要给定命名空间namespace,用于隔离sql,还有一个很重要的作用,后面会讲 xml文件的头部信息:<?xml version="1.0" encoding="UTF-8" ?> 命名空间: ,值就是dao层下面的java文件的URLxml文件中有很多的标签, select * from user where id=#{v}其中, id要和java文件中的方法名相同,第二,parameterType要和java文件中的入参类型相同,最后,返回值是一个User对象。注意,如果返回值是对象,就要指明对象文件的位置所在.下面是动态sql的信息: 其中sql片段要在前面做好定义,在标签中使用,采用include标签,select * from user 上面就是一个简单的sql片段 这是where if标签和foreach标签的使用
idList是QueryVo里面定义的,QueryVo示例:
如果你需要通过QueryVo来查询,就要在里面定义好类型和变量,如果通过list查询所有信息,就要定义List idList;并且生成set和get方法。标签的入参属性改为QueryVo。
2.model 里面就是数据库的一些基本信息,没什么好说的,见下图:3.test
test里面是对我们写的方法的调用和测试,先看例子:根据多个id查询用户:前面五行是照常写的,后面建一个list集合,添加数据,然后set到波里面,通过实现类userMapper来调用当中的方法实现查询,最后输出。
附:sql语句的写法,一般写法,select * from user where id=#{v} ,里面的v可以随意写,特殊情况,select * from user where username like ‘%${value}%’,
insert: insert into user (username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address}) update:update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} 在java中用?表示的,都要用 #{内容} 来代替。