众筹网站项目第二天之使用mybatis逆向工程创建bean实体类和Mapper配置文件、接口以及主界面设计和登录功能的实现

打开原教程视频
注:本人是编程小白,这个是我第一个尝试的项目,编写该系列博客是为了记录第一次做项目的经历,其中肯定会有不少不成熟的操作甚至错误之处,如果可以,希望大神指出,谢谢大家。

使用mybatis逆向工程创建bean实体类和Mapper配置文件、接口

在上一章搭建好项目环境之后,那么就要开始实现网站的各项功能。简单的登录功能实际上就是一个数据库查询操作,此时我们就需要准备好关于bean实体类和Mapper等文件。但是由于表的数目较多,所以使用mybatis逆向工程能很好的提高项目开发的效率。
具体操作可参考此链接
如果使用的是maven进行jar包管理,可参考以下的文件配置。

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bin</groupId>
    <artifactId>MyBatis_Generator</artifactId>
    <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.3</version>
                    <configuration>
                        <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                    <executions>
                        <execution>
                            <id>Generate MyBatis Artifacts</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.mybatis.generator</groupId>
                            <artifactId>mybatis-generator-core</artifactId>
                            <version>1.3.2</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
</project>

generatorConfig.xml文件

<?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>
    <!-- 配置数据库连接的包 -->
    <!-- <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" /> -->

    <!-- context指定环境 -->
    <context id="MyGenerator" targetRuntime="MyBatis3Simple">

        <!-- 这个标签可以去掉MBG各类元素生成的注释,默认是全部生成的 -->
        <commentGenerator>
            <!-- 去掉注释 -->
            <property name="suppressAllComments" value="true"/>
            <!-- 去掉时间戳 -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- 数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/crowdfunding?serverTimeZone=UTC&amp;characterEncoding=UTF-8"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!-- JAVA JDBC数据类型转换,参照官方文档,不再细说 -->
        <!-- 是否强制数据库的浮点类型转换成BigDecimal类型-->
        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--  javaModelGenerator javaBean配置
        targetPackage 输入包名 输出路径
        targetProject 输出项目位置
		最好跟你要放在哪个module下的全包名一样,
		否则后期要一个个改,而且没发现的话会出现一堆莫名奇怪的错误,
		下面的mapper也一样
 -->
        <javaModelGenerator targetPackage="com.generator.bean" targetProject="src">
            <!-- enableSubPackages 是否开启子包名称 是否在包名后边加上scheme名称 -->
            <property name="enableSubPackages" value="false" />
            <!-- 在Set方法中加入.trim
                    是否将数据库的字段值去掉两端空格,再封装到实体类
             -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 映射文件mapper.xml配置 -->
        <sqlMapGenerator targetPackage="com.generator.mapper"  targetProject="src">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- 动态代理类接口,和mapper.xml在要同一个路径 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.generator.mapper"  targetProject="src">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 数据表 根据数据库中的表来生成  -->
        <table tableName="t_account_type_cert" domainObjectName="AccountTypeCert"/>
        <table tableName="t_advertisement" domainObjectName="Advertisement"/>
        <table tableName="t_cert" domainObjectName="Cert"/>
        <table tableName="t_dictionary" domainObjectName="Dictionary"/>
        <table tableName="t_member" domainObjectName="Member"/>
        <table tableName="t_member_address" domainObjectName="MemberAddress"/>
        <table tableName="t_member_cert" domainObjectName="MemberCert"/>
        <table tableName="t_member_project_follow" domainObjectName="MemberProjectFollow"/>
        <table tableName="t_message" domainObjectName="Message"/>
        <table tableName="t_order" domainObjectName="Order"/>
        <table tableName="t_param" domainObjectName="Param"/>
        <table tableName="t_permission" domainObjectName="Permission"/>
        <table tableName="t_project" domainObjectName="Project"/>
        <table tableName="t_project_tag" domainObjectName="ProjectTag"/>
        <table tableName="t_project_type" domainObjectName="ProjectType"/>
        <table tableName="t_return" domainObjectName="Return"/>
        <table tableName="t_role" domainObjectName="Role"/>
        <table tableName="t_role_permission" domainObjectName="RolePermission"/>
        <table tableName="t_tag" domainObjectName="Tag"/>
        <table tableName="t_type" domainObjectName="Type"/>
        <table tableName="t_user" domainObjectName="User"/>
        <table tableName="t_user_role" domainObjectName="UserRole"/>


        <!-- 数据表更详细的属性参见官方文档,这里注释掉,不细讲 -->
        <!-- <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
          <property name="useActualColumnNames" value="true"/>
          <generatedKey column="ID" sqlStatement="DB2" identity="true" />
          <columnOverride column="DATE_FIELD" property="startDate" />
          <ignoreColumn column="FRED" />
          <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
        </table> -->
    </context>
</generatorConfiguration>

执行类RunMBG

public class RunMBG {
    public static void main(String[] args) throws Exception {
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            File configFile = new File("E:\\maven_projects\\projects\\MyBatis_Generator\\src\\main\\resources\\generatorConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);

    }
}

可以看到我设置的是绝对路径,因为相对路径一直报错说找不到generatorConfig.xml文件,出现此错误可以尝试一下这个方法。
运行结果:
在这里插入图片描述

主界面设计

这个直接找到资料中的index.html和login.html文件改成jsp文件,并将其放到jsp文件夹下。
在这里插入图片描述
另外需要复制同文件夹下的文件夹粘贴到webapp下。

在这里插入图片描述
在这里插入图片描述
我们在webapp文件夹下的index.jsp下编写:

<jsp:forward page="dispatcherController/index.htm"></jsp:forward>

然后创建前端控制器类DispatcherController,编写请求转发处理的方法体

@Controller
@RequestMapping(value = "dispatcherController")
public class DispatcherController {
    /**
     *
     * @return
     */
    @RequestMapping(value = "/index")
    public String index(){
        return "index";
    }

启动服务器就能请求转发到主界面了。
在这里插入图片描述
接下来实现登录页面的跳转
在DispatcherController编写好登录界面跳转的方法体。

/**
     * 跳转到登录界面
     * @return
     */
    @RequestMapping(value = "/login")
    public String login(){
        return "login";
    }

打开主界面index.jsp文件找到登录按钮的超链接,配置好在路径跳转。
在这里插入图片描述
点击登录便可跳转到改页面。
在这里插入图片描述

简单的登录功能实现

首先我们观察下图的登录时序图并理解登录的流程。
在这里插入图片描述
根据上图就可以简单的看出,登录功能的实现就是接受前端的数据并进行封装,然后以其为条件(参数),各层传递进行数据库查询并判断是否存在此数据的操作。
前面我们已经使用mybatis逆向工程创建了实体类和Mapper.xml文件和dao层的接口,此时只需要补充service层的接口和是实现类。
接口类

public interface UserService {
    
    User queryUserLogin(User user);
}

实现类

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
   
    public User queryUserLogin(User user) {
        User userLogin = userMapper.queryUserLogin(user);
        if (userLogin==null){
            throw new LoginFailException("账号或密码不正确!");
        }
        return userLogin;
    }
}

到了这里我们就只剩下在DispatcherController类中接受数据并调用service层的方法进行数据查询。

 /**
     * 登录操作
     * @param user
     * @return
     */
    @RequestMapping(value = "/doLogin")
    public String doLogin(User user, HttpSession session){
        User userLogin = userService.queryUserLogin(user);
        session.setAttribute(Const.LOGIN_USER,userLogin);
        System.out.println(user.getLoginacct());
        System.out.println(user.getUserpswd());
        System.out.println(userLogin.getLoginacct());
        System.out.println(userLogin.getUserpswd());
        return "main";
    }

另外记得在dao层接口补充登录查询方法和Mapper.xml的查询语句

<select id="queryUserLogin" parameterType="com.bin.crowdfunding.bean.User" resultType="com.bin.crowdfunding.bean.User">
    select * from t_user where loginacct=#{loginacct} and loginacct=#{loginacct}
  </select>

在启动服务器之前,我们还需要检查一下login.jsp文件,要不然怎么知道它是否匹配好了和封装类一样的参数名字和路径。
在这里插入图片描述
还需要设置按钮提交操作
在这里插入图片描述
一切准备完毕,开始检验成果了,首先向数据库的t_user表插入一条数据并启动服务器
在这里插入图片描述
输入账户密码
在这里插入图片描述
点击登录便可出现404页面找不到的错误,这是因为还未在项目中配置登录成功的跳转页面。但根据上面编写的方法,我们可以在控制台上查看到封装的数据和查出来的数据是一样的,证明我们的登录的流程是完全跑通了。
在这里插入图片描述
在这里插入图片描述
谢谢阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值