MyBatis实现用户多条件动态查询,分页,添加和删除(1)
-
运行环境 jdk 1.8 ,tomcat 9.0
-
jar包需要 json-lib-2.2.3-jdk15.jar,jstl-1.2.jar,mybatis-3.2.2.jar,mysql-connector-java-5.1.34.jar
-
js:jquery-1.12.4.js
-
数据库:MySql
效果图
建立数据库表
共两个用户user,角色表role
创建实体类
在这里我们使用cmd快速创建实体类和实体类的xml文件
需要两个jar包:mysql-connector-java-5.1.25-bin.jar,mybatis-generator-core-1.3.2.jar
需要的文件:generator.xml ,需要修改数据库连接,实体类和类型还有文件保存路径(不能含有中文)。
源码
- 打开cmd进入到文件然后运行此命令 java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite
- 会生成entity和dao所有的文件
User实体类
package entity;
public class User {
private Integer id;
private String uname;
private String upass;
private String usex;
private int urole;
private Role role;
private String rname;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public String getUsex() {
return usex;
}
public void setUsex(String usex) {
this.usex = usex;
}
public int getUrole() {
return urole;
}
public void setUrole(int urole) {
this.urole = urole;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public String getRname() {
return rname;
}
public void setRname(String rname) {
this.rname = rname;
}
@Override
public String toString() {
return "User [id=" + id + ", uname=" + uname + ", upass=" + upass + ", usex=" + usex + ", urole=" + urole
+ ", role=" + role + ", rname=" + rname + "]";
}
}
Role实体类
package entity;
import java.util.List;
public class Role {
private int rid;
private String rname;
private List<User> listuser;
public List<User> getListuser() {
return listuser;
}
public void setListuser(List<User> listuser) {
this.listuser = listuser;
}
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public String getRname() {
return rname;
}
public void setRname(String rname) {
this.rname = rname;
}
@Override
public String toString() {
return "Role [rid=" + rid + ", rname=" + rname + ", listuser=" + listuser + "]";
}
}
一个角色有多个用户所以用list集合
UserMapper.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="dao.UserMapper">
<!-- 增加用户 -->
<insert id="addUser" parameterType="User">
INSERT INTO users (uname,upass,usex,urole) VALUES (#{uname},#{upass},#{usex},#{urole})
</insert>
<!-- 动态的SQL语句 -->
<select id="findByConditions" resultType="User">
select * from users
<if test="uname != null">where uname=#{uname} </if>
<if test="id != null">and id=#{id}</if>
<if test="upass != null">and upass=#{upass}</if>
</select>
<!-- end -->
<!-- 联表查询 -->
<select id="findUserAndRole" resultMap="userlist" >
SELECT * FROM users a,role b WHERE a.urole=b.rid
<if test="uname !=null">
and uname like concat('%',#{uname},'%')
</if>
<if test="urole != 0">
and urole =#{urole}
</if>
</select>
<!-- end -->
<!-- 根据id查询用户 -->
<select id="findUserById" resultType="User">
select * from users where id=#{id}
</select>
<!-- end -->
<!-- 根据id删除用户 -->
<delete id="delUserById" parameterType="User">
DELETE FROM users WHERE id=#{id}
</delete>
<!-- end -->
<!-- 批量删除-->
<delete id="delUsersByIds">
DELETE FROM users WHERE id in
<foreach item="id" index="index" open="(" separator="," close=")" collection="array">
#{id}
</foreach>
</delete>
<!-- end-->
<!-- 分页 -->
<select id="paginationUser" resultMap="userlist">
select * from users a,role b where a.urole = b.rid limit #{page},#{count}
</select>
<!-- end -->
<!-- 分页+搜索 -->
<select id="pagingsearch" resultMap="userlist">
select * from users a,role b where a.urole = b.rid
<if test="uname !=null">
and uname like concat('%',#{uname},'%')
</if>
<if test="urole != 0">
and urole =#{urole}
</if>
limit #{page},#{count}
</select>
<!-- end -->
<!-- 用户更新 -->
<update id="updateuser" parameterType="User">
update users <set>
<if test="uname != null and uname !=''">
uname=#{uname},
</if>
<if test="upass != null and upass !=''">
upass = #{upass},
</if>
<if test="usex != null and usex !=''">
usex = #{usex},
</if>
<if test="urole != 0 and urole !=''">
urole = #{urole}
</if>
</set>
<where>
<if test="id != null">
id=#{id}
</if>
</where>
</update>
<!-- end -->
<!-- 模糊查询 -->
<select id="findUserAndRoleBymohu" resultType="User" >
SELECT * FROM users a,role b WHERE a.urole=b.rid
and upass like concat('%',#{upass},'%')
</select>
<!-- end -->
<!-- 模拟登录 -->
<select id="UserLogin" resultType="User">
select * from users where uname=#{uname} and upass=#{upass}
</select>
<!-- end -->
<resultMap id="userlist" type="User" >
<id property="id" column="id"/>
<result property="uname" column="uname"/>
<result property="upass" column="upass"/>
<result property="urole" column="urole"/>
<result property="usex" column="usex"/>
<result property="rname" column="rname"/>
<association property="role" javaType="Role">
<id property="rid" column="rid"/>
<result property="rname" column="rname"/>
</association>
</resultMap>
<select id = "findByUserAndAddress" resultMap="useraddresslist">
SELECT * FROM users a LEFT JOIN address b ON a.id = b.uid
</select>
<resultMap id="useraddresslist" type="User">
<id property="id" column="id"/>
<result property="uname" column="uname"/>
<result property="upass" column="upass"/>
<result property="urole" column="urole"/>
<result property="usex" column="usex"/>
<collection property="list" ofType="Address">
<id property="aid" column="aid"/>
<result property="address" column="address"/>
<result property="uid" column="uid"/>
</collection>
</resultMap>
</mapper>