MyBatis实现用户的动态搜索分页等功能(1)

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>

猜你喜欢

转载自blog.csdn.net/weixin_42561197/article/details/82883269