您的位置:首页 > 数据库 > MySQL

Mybatis之MySQL批量增删改查,多选项查询,模糊查询,分页

2017-08-21 23:24 513 查看
做项目经常会用的增删改查的操作,单个的操作我就不写了。这里主要写的是批量的操作,多选项查询,模糊查询,分页操作。有兴趣的童鞋可以看一下。有错误麻烦之出,谢谢~

首先,简单做了个admin表
create table admin(
aid number(10) primary key,
aname varchar2(100) ,
pwd varchar2(100),
city varchar2(100),
address varchar2(200)
)


1、批量添加

mapper接口部分:
public int addAdmin(List<Admin> adminList);

持久层:
<insert id="addAdmin" >
insert into amdin
(aid,aname,pwd,city,address)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.aid},#{item.aname},#{item.pwd},#{item.city},#{item.address)
</foreach>
</insert>


2、批量删除

mapper接口部分:
public int delAdmin(String[] adminArray);

持久层:
<delete id="delAdmin">
delete from admin where aid in
<foreach collection="array" item="fid" open="(" separator=","  close=")">
#{aid}
</foreach>
</delete>


3、修改信息

mapper接口部分:
public int update(Admin admin);

持久层:
<update id="update" parameterType="Admin">
update admin set aname=#{aname},city=#{city},address=#{address} where aid=#{aid}
</update>


4、查询总数

mapper接口部分:
public int total();

持久层:
<select id="total" resultType="int" >
select count(1) from admin;
</select>


5、多选项查询(选项可以为null)

mapper接口部分:
public ArrayList<Admin> findBySelect(@param("aname") String aname,@param("city") String city,@param("address") String address);

持久层:
<select id="findAll" resultType="Admin" >
select * from admin where aid>0
<if test="aname!=null and aname!=''">
and aname=#{aname}
</if>
<if test="city!=null and city!=''">
and city=#{city}
</if>
<if test="address!=null and address!=''">
and address=#{address}
</if>
</select>


6、模糊查询

因为concat语句只能写两个参数,因此要前后都模糊查询的话,需要两次concat连接
mapper接口部分:
public ArrayList<Admin> findByVague(String aname);

持久层:
<select id="findByVague">
select * from admin where aname like concat(concat('%', #{aname}), '%');
</select>


7、分页操作

pageNum是页码数,pageSize是每页条数,而pageRow是前X页的总行数。
比如说,你要显示第5页,每页10条数据。则pageNum=5,pageSize=10,pageRow=(5-1)*10。limit的里面不能公式计算,传值的时候需要注意提前计算好,再传。
mapper接口部分:

public ArrayList<Admin> findBySelect(@param("pageRow") String pageRow,@param("pageSize") String pageSize);

持久层:
<select id="findByPage">
select * from (select aid from admin limit ${pageRow},1) limit ${pageSize};
select * from admin where bbu_id>=(select aid from admin limit ${pageRow},1) limit ${pageSize}//这句比上句效率高,自己体会一下
</select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis MySQL