基于mybatis框架的注册用户名异步验重

注册jsp的Ajax代码

$(":text").blur(function () {
            var username = $(this).val()
            $.ajax({
                url: '${path}/user?method=checkUserName',
                data: {username: username},
                type: 'post',
                dataType: 'json',
                success: function (res) {
                    var msg = res.msg
                    $("#msg").text(msg)
                    if(res.code==0){
                        $("#msg").css("color", "green");
                    }else if(res.code==500){
                        $("#msg").css("color", "red");
                    }
                }
            })

前面已经介绍过Ajax里参数的具体使用, 将checkUserName的方法路径传入,比较传入的code值回显出不同的提示信息。

servlet代码

 protected void checkUserName(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        HashMap<String,Object> map = new HashMap<>();
        SysUser sysUser = new SysUser();
        sysUser.setUsername(username);
        SysUser newUser = userService.findUserName(sysUser);
        if (newUser == null&!"".equals(username)) {
            map.put("code", 0);
            map.put("msg", "用户名可用");
        } else if(!"".equals(username)){
            map.put("code", 500);
            map.put("msg", "用户名已被占用");
        }else{
            map.put("msg", "");
        }
        ResponseUtil.write(resp,map);
    }

调用userService中的findUserName方法,将注册输入的用户名传入,在数据库中寻找该用户名,如果找到则newUser已经存在,提示用户名已被占用,如果newUser为空则数据库中无该用户名,可以使用,这里非空输入才会提示用户名是否可用。

service代码

public class UserServiceImpl implements UserService {
    private UserMapper userMapper = MapperUtil.getSqlSession().getMapper(UserMapper.class);
   @Override
    public SysUser findUserName(SysUser username) {
        SysUser userName = userMapper.selectByUserName(username);
        return userName;
    }
}

 通过获取userMapper代理对象调用selectByUserName方法,返回查找的用户名。

mapper.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="javaweb.mapper.UserMapper">
    <select id="selectByUserName" resultType="sysUser">
        select * from sys_user where username = #{username};
    </select>
</mapper>

Mybatis中所有数据库的操作都会基于该映射文件和配置的sql语句,在这个配置文件中可以配置任何类型的sql语句。框架会根据配置文件中的参数配置,完成对sql语句以及输入输出参数的映射配置。其中namespace为命名空间,填入的是UserMapper接口的全路径,id是UserMapper接口中的方法,resultType是返回的结果类型。

MapConfig.xml代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="config/jdbc.properties"></properties>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启mybatis日志功能-->
        <setting name="logImpl" value="LOG4J"/>
        <!--开启mybatis二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <typeAliases>
        <package name="javaweb.entity"/>
    </typeAliases>
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="javaweb.mapper"/>
    </mappers>
</configuration>

该配置文件主要用于连接数据库,可以连接多个数据库,主要有以下的参数配置:

1.properties属性:用于指定外部配置文件的位置。

2.settings设置:mapUnderscoreToCamelCase设置是否开启自动驼峰命名规则映射。

3.typealises:类型别名,只和xml配置有关,用于减少类的完全限定名的冗余。

4.environments:可配置多个运行环境,default中为默认使用哪个数据库。

5.mappers:映射器,用来映射mapper.xml文件,有三种映射方式,图中为配置包名。

utils代码

package javaweb.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;

public class MapperUtil {
    private MapperUtil(){}
    private static SqlSessionFactory factory;
    static {
        InputStream resourceAsStream = null;
        try {
            resourceAsStream = Resources.getResourceAsStream("config/mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  public static SqlSession getSqlSession(){
        return factory.openSession(true);
  }
}

mapperUtil用于加载config.xml文件,返回sql会话信息。

package javaweb.utils;
import cn.hutool.json.JSONUtil;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public final class ResponseUtil {
    private ResponseUtil(){}
    public static void write(HttpServletResponse response,Object object) throws IOException {
        response.setContentType("application/json;charset=utf-8");
        PrintWriter writer = response.getWriter();
        writer.write(JSONUtil.toJsonStr(object));
        writer.close();
    }
}

ResponseUtil用于以json格式响应数据的写出。

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值