zoukankan      html  css  js  c++  java
  • Spring,Mybatis,Springmvc框架整合项目(第二部分)

    一、创建数据库表

    打开Navicat Premium,点击左上角连接,选择mysql

     

    输入你的数据库用户名和密码信息,可以先点击下测试连接,如果显示连接成功,说明能连接到数据库,然后点击确定。如果显示1045类的错误,估计你数据库服务没打开。然后再左侧localhost_3306右键新建数据库,输入新建的数据库名,选择utf-8字符集,然后确定。


    点击查询----新建查询


    输入以下sql代码:

    create table t_user (
      id int primary key AUTO_INCREMENT,
      username varchar(30),
      password varchar(32),
      last_visit datetime
    ) ENGINE=InnoDB;

    这里ENGINE=InnoDB代表我们的表是支持事务的,主键id我们设置自增长。

    然后左侧表,右键刷新,t_user表就创建成功了。last_visit字段代表最后访问时间,其他字段不用解释大家也知道。

    二、代码讲解


    1、首先我们需要定义一个用来封装数据库表字段的pojo,这里我们创建了一个User类,属性和t_user表字段对应。


    2、我们在dao层定义我们的接口方法,包括查询用户,插入用户,更新最后访问时间。


    3、创建mapper文件,mapper文件的命名必须和接口的命名一致(例如UserMapper.java和UserMapper.xml)


    上面mapper文件的定义中,用查询用户sql来举例,id="findUserByUserName" 代表方法名称,parameterType="string"代表方法的参数类型,string可以直接小写,因为它是mybatis自定义的别名(基本数据类型都可以小写),当然你也可以直接写java.lang.String。resultType="user",这里的user代表的是com.neu.pojo.User,这里之所以可以直接用类名小写表示全限定类名,是因为在sqlMapConfig.xml文件中配置了批量定义别名,意思就是在com.neu.pojo包下的类在mapper文件中都可以用类名小写来表示。如果不配置,必须写全限定类名com.neu.pojo.User。


    还有要注意的一点:如果传入的参数类型(parameterType)是pojo类型,那么#{}中的变量名称必须是pojo中对应的属性,例如用户注册和更新最后访问时间对应的sql语句中#{}的变量必须是User类中的属性,为了保持良好的编码习惯,不管我们传入的是什么类型的参数,都尽量和pojo的属性保持一致,例如查询用户对应的sql语句,虽然传入的参数是string类型,但是我们也使用了#{username}。

    4、配置applicationContext-dao.xml

    有了上面的mapper文件和pojo后,我们就可以配置dao层的spring文件了,在此之前,我们先配置下数据库的连接信息


    在db.properties文件中我们配置了数据库的用户名,密码,驱动,url信息。之所以把这些信息抽取到外部文件,是为了方便管理。然后我们去配置下dao层的spring文件


    【1中配置】加载刚才的db.properties文件,【2中配置】引用了db.properties定义的字段,配置连接源,只有配置了【1中配置】的<context:property-placeholder>标签,在【2中配置】才可以使用${}符号引用jdbc.username等字段。【3中配置】是让mybatis来管理我们的数据库,需要指定数据源和mybatis的配置文件。【4中配置】用来扫描mapper,需要指定接口所在的包位置。

    5、创建业务代码

    在com.neu.service.UserService类中我们实现了三个业务方法。首先需要让spring自动注入一个UserMapper接口类型对象


    @Autowired代表按照类型注入,这里其实注入的是个代理对象,spring怎么能自动注入呢?我们需要在service层的spring配置文件中进行配置,来看applicationContext-service.xml


    这里我们配置了注解扫描,意思就是扫描此包下所有类的中的注解,至于如何注入就是spring帮我们完成了。在刚才的业务类中,我们还需要在类上加上@Service注解,spring底层会自动为我们创建实例,待会controller层需要自动注入这个实例。


    然后我们就可以使用userMapper来定义业务代码了


    6、配置事务

    在实际的开发环境中,我们需要为service层的方法加上事务管理,这个很好理解,例如我们的业务涉及到转账操作,转账业务至少包括两个sql语句,一个是加钱操作,一个是减钱操作,那么这两个操作必须都成功执行才能提交事务,否则就必须回滚事务。来看下applicationContext-transaction.xml


    【1】中配置了事务管理器,需要指定数据源。【2】中定义了切面,切面由切点和增强两部分组成,切点用来确定哪些方法需要增强,增强包括增强逻辑和切点的方位信息。切面的意思就是,我们需要在哪个方法的哪个位置执行哪个增强代码,举个例子,我们在addUser(User user)方法执行前开启事务,在方法执行后提交或者回滚事务,addUser(User user)这个方法就是切点,开启事务和提交事务或者回滚事务对应的代码就是增强逻辑,而方法执行前或者执行后就代表方位信息。pointcut="execution(* com.neu.service.*.*(..))"代表切点,execution()是固定写法,第一个*代表方法的返回值,com.neu.service.*.*(..)中第一个*代表这个包下的所有类,第二个*代表类中所有的方法,..代表参数任意。所以com.neu.service.UserService下的所有方法都会被增强,【3】中定义增强,需要一个事务管理器属性。就是【1】中定义的,然后就是事务属性的配置,不同的方法名开头的方法定义了不同的事务传播行为,具体代表什么意思还需读者自行查询书籍或者资料,一两句话说不清。

    7、创建controller


    在controller中我们需要注入service,因为我们需要调用业务代码,前面是不是说了这里要用的。spring自动创建的UserService实例会注入进来,这里的controller类需要加上@Controller注解,目的也是让spring为我们自动创建实例,然后调用对应的handler。spring为什么能够自动创建controller呢,当然我们需要配置注解扫描了,来看springmvc.xml


    上面的配置就会扫描com.neu.controller包下所有带注解的类,继续看配置:


    【2】的配置没什么好解释的,就是配置最新的处理器映射器和处理器适配器。【3】中配置视图解析器,prefix代表前缀,suffix代表后缀,例如我们在controller中返回一个index.jsp页面,那么我们直接写return "index"就可以了,视图解析器就会知道我们要返回的是WEB-INF/jsp/index.jsp这个页面。springmvc.xml文件中还有【4】【5】配置,我们待会再讲!继续看controller


    当我们在浏览器输入http://localhost:8080/的时候,这个请求就会映射到index()方法,同理输入http://localhost:8080/login和http://localhost:8080/register就会分别映射到showLogin()和showRegister方法。那么凭什么你说映射就映射,当然了,我们需要配置url的拦截形式,来看web.xml配置文件。


    这里我们的url拦截形式是/,意思就是除了jsp页面之外,所有的资源都会拦截,注意我说的是所有资源,包括静态资源(css,js等)。所以当我们输入http://localhost:8080/或者http://localhost:8080/login的时候,DispatcherServlet对请求url进行解析,就会得到请求资源标示符/或者/login,然后就能够在controller中查找到对应的handler,这个时候对应的方法也就匹配上了,然后就执行,返回页面,让视图解析器去解析你返回的到底是哪个jsp,解析完之后再进行渲染,最后响应浏览器。读者可能疑惑,为什么url中没有工程名com-neu-web,这是因为我们在pom文件中配置了,在配置tomcat插件那个位置,只要配置了<path>/</path>就可以在url中不写工程名。还有一点说下,这里springmvc的处理请求流程说的比较简单,详细的请求过程会在第三部分细说。


    8、web.xml配置

    有了以上的配置和代码后,我们就可以在web.xml中去加载这些配置文件了


    【1】是配置post乱码过滤器,【2】是加载spring的配置文件classpath:spring/applicationContext-*.xml,这里的使用*代表会加载以下三个文件:


    三、启动项目

    至此,我们的项目就可以启动了,主页和登录还有注册页面都可以显示了。这里只是显示,功能我们还没讲,我会在第三部分继续讲解。右键com-neu-web项目,选择run as  ,  选择maven build...,然后再Goals中输入clean tomcat7:run  点击run


    看到如下信息说明启动成功:


    在浏览器访问: http://localhost:8080/  ,我们的主页就出来了,看见这个小熊就说明访问成功!


    点击请先登录,会跳转到登录页面,来我们点点试试,看看登录页面。


    然后再点击Create Account试试,注册页面也就出来了。


    先到这停吧,剩下的内容我会在第三部分继续讲解!

  • 相关阅读:
    oracle 分析函数3
    oracle 分析函数4
    oracle 分析函数2
    postgres
    博客系统
    Java 笔试面试 算法编程篇 一
    Java 笔试面试 基础篇 一
    Struts2
    mysql 数据类型
    ExceptionDemo
  • 原文地址:https://www.cnblogs.com/neuzk/p/9476409.html
Copyright © 2011-2022 走看看