Spring boot 用户注册页面并往数据库传值

注册页面的代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <link rel="stylesheet" href="../css/init.css">
    <link rel="stylesheet" href="../css/register.css">
    <script src="../js/jquery.min.js"></script>
    <script src="../js/register.js"></script>

</head>
<body>
    <div class=" content">
        <div class="login-header">
            <div class="logo">
                <h1>
                    <a href="#"><img src="../images/logo.png" alt=""></a>
                </h1>
                <p class="company-name">公司名</p>
            </div>

            <div class="search"><img src="../../images/black-search.png"/></div>
            <div class="back-index"><a href="/">官网</a></div>
        </div>

        <div class=" registerbox">
            <div class="registerbox-header">
                <p>账号注册</p>
            </div>

            <p class="register-description">已有账号?
                <a href = "/init/login" >立即登录</a>
            </p>

            <form  action="/createUser" method="get" autocomplete="off" class="info"  onsubmit="return registerCheck()">
                <input type="text" name="mail"  id="mail"  class="register-mail" placeholder="请输入邮箱"/><br/>
                    <div class="div_c_r"><input style="float: right;border:none; text-align: center;font-size: 11px;padding: 4px 9px;width:calc(50% - 16px);background: #05a0e0;color: #fff;" id="generate_code" value="获取验证码" type="button"  onclick="sendmail()">
                    <input style="border: none;" type="tel" name="code" onblur="sub();" onkeydown="" id="checkcode" placeholder="请输入邮箱验证码" >
                </div>
                <input type="text" name="password"  class="register-password" placeholder="请输入密码"/><br/>
                <input type="text" name="repassword"  class="register-repassword" placeholder="请再次输入密码"><br/>
                <div class ="remember">
                    <input type ="checkbox" name="rememberPW"/>
                    <p class="ps">我已阅读并同意<a href="/">&nbsp;使用条款</a>和&nbsp;<a href="/">隐私政策</a></p>
                </div>
                <input type="submit"  value="注册"  class="button" />
            </form>
        </div>
    </div>

</body>
</html>

 

可以看到,这个页面底下传了两个值,mail 和 password 。由form action 指向 /createUser,在控制层中,代码如下

 

@Controller
public class UserController {
    @Autowired 
    private IUser userService;          //记得注入userservice
    @GetMapping("/createUser")  
    @ResponseBody
    public String CreateUser(User user){
        int result =  userService.insertUser(user);     //调用service的insertuser方法
        return "1";

    }
}

 

在service底下,insertuser的方法如下,

@Service
public class UserImp implements IUser {
    @Autowired
    private UserMapper userMapper;


    @Override
    public int insertUser(User user){
//        int result=userMapper.insert(user);
//        Example example = new Example(User.class);
//        Example.Criteria criteria =  example.createCriteria();
//        criteria.andEqualTo("mail",user.getMail());
//        criteria.andEqualTo("password",user.getPassword());

        int result =  userMapper.insertSelective(user);
        return result;
    }

}

 

insertSelective和insert方法的区别是,insertselective可以对插入的值进行判断,不为空的值会插入,而insert是对所有的值都插一遍,不为空的插入,为空的插入null。

 

之于dao以及model,我们使用的是mybatis的逆向工程,编写generatorConfig.xml文件。在这边注意一下,数据库的命名规则,例如用户名应该是user_id ,这样子后台生成的User类的对应的id为userId(注意一下这是自动生成的)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!-- 引入数据库连接配置 -->
    <properties resource="jdbc.properties"/>

    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!-- 配置 tk.mybatis 插件 -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.MyMapper"/>
        </plugin>
        <!-- 配置数据库连接 -->
        <jdbcConnection
                driverClass="${jdbc.driverClass}"
                connectionURL="${jdbc.connectionURL}"
                userId="${jdbc.username}"
                password="${jdbc.password}">
        </jdbcConnection>

        <!-- 生成模型的包名和位置 -->
        <javaModelGenerator targetPackage="com.txy.portal.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 配置 XML 存放路径 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.txy.portal.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 配置需要指定生成的数据库和表,% 代表所有表 -->
        <!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
        <table tableName="user" domainObjectName="User" enableCountByExample="true"
               enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true"
               selectByExampleQueryId="true"/>
    </context>
</generatorConfiguration>

使用maven的

进行生成。

 

最后是mapper文件,

<mapper namespace="com.txy.portal.dao.UserMapper">
  <resultMap id="BaseResultMap" type="com.txy.portal.model.User">
    <!--
      WARNING - @mbg.generated
    -->
    <id column="user_id" jdbcType="INTEGER" property="userId" />
    <result column="user_name" jdbcType="VARCHAR" property="userName" />
    <result column="mail" jdbcType="VARCHAR" property="mail" />
    <result column="gender" jdbcType="CHAR" property="gender" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="mobile" jdbcType="INTEGER" property="mobile" />
  </resultMap>

 

一些总结:

1、数据库中,主键的定义不能为空,当插入数据库的值不包含id(主键)的时候,它会默认自增一成为id号。

2、了解mybatis逆向工程的方法,在编写dao和model(实体)的时候,可以省去很多麻烦。

3、前端往后端传值的时候,可以直接使用对象作为接收,因为传的值会自动注入到对象当中,与此同时,insert和insertselective方法也是要求 后面的括号内是一个对象。

4、在往数据库怼   密码  这个数据的时候,考虑使用base64 、md5做简单的加密处理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值