• Spring整合MyBatis(简单登录Demo)


    SpringMvc简单整合(登录模块)

    1.1 整合思路

    1、SqlSessionFactory对象应该放到spring容器中作为单例存在。

    2、传统dao的开发方式中,应该从spring容器中获得sqlsession对象。

    3、Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。

    数据库的连接以及数据库连接池事务管理都交给spring容器来完成

    1.2 整合需要的jar

     

    1、springjar

     

    2、Mybatisjar

     

    3、Spring+mybatis的整合包。

     

    4、Mysql的数据库驱动jar包。

     

    5、数据库连接池的jar包。

    1.3步骤

     

    第一步:创建一个java工程。

     

    第二步:导入jar包。(上面提到的jar包)

     

    第三步:mybatis的配置文件sqlmapConfig.xml

     

    第四步:编写Spring的配置文件

     

    1、数据库连接及连接池

     

    2、事务管理(暂时可以不配置)

     

    3sqlsessionFactory对象,配置到spring容器中

     

    4mapeer代理对象或者是dao实现类配置到spring容器中。

     

    第五步:编写dao或者mapper文件

     

    第六步:测试。

    代码演示:

     

     SqlMapConfig.xml
    
        <?xmlversion="1.0"encoding="UTF-8"?>
    <!DOCTYPEconfiguration
    PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    	 
    </configuration>
    

     

     applicationContext.xml
       <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    
        <!-- 加载配置文件 -->
        <context:property-placeholder location="classpath:db.properties" />
        <!-- 数据库连接池 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="maxActive" value="10" />
            <property name="maxIdle" value="5" />
        </bean>
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
                <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:sqlMapConfig.xml" />
        </bean>
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="cn.kingdee.dao" />
        </bean>
          <context:component-scan base-package="cn.kingdee.service"/>
        
        <!-- 事务管理器 -->
        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 数据源 -->
            <property name="dataSource" ref="dataSource" />
        </bean>
        <!-- 通知 -->
         
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!-- 传播行为 -->
                <tx:method name="save*" propagation="REQUIRED" />
                <tx:method name="insert*" propagation="REQUIRED" />
                <tx:method name="delete*" propagation="REQUIRED" />
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
                <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
            </tx:attributes>
        </tx:advice>
        <!-- 切面 -->
     
        <aop:config>
            <aop:advisor advice-ref="txAdvice"
                pointcut="execution(* cn.kingdee.service.*.*(..))" />
        </aop:config>
    </beans>
    
     db.properties
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=root

      springMvc.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
            http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    	<!--注解扫描 -->
    	<context:component-scan base-package="cn.kingdee.controller"></context:component-scan>
    	<!--注解驱动(为了提高运行速度) -->
    	<mvc:annotation-driven />
    	
    	<!--视图解析器 -->
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="viewClass"
    			value="org.springframework.web.servlet.view.JstlView" />
    		<!--路径前缀 -->
    
    		<property name="prefix" value="/WEB-INF/jsp/" />
    		<property name="suffix" value=".jsp"></property>
    	</bean>
    

     Dao的开发

    1、使用mapper代理形式开发方式

     

    必须接口文件名和xml的文件一样(例如:UserDaoMapper和  UserDaoMapper.xml  )
    Dao层 及xml
    public interface UserDaoMapper {
    
        User findByName(User user);
    
    }
    
    UserDaoMapper.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="cn.kingdee.dao.UserDaoMapper">
        <select id="findByName" parameterType="cn.kingdee.po.User" resultType="cn.kingdee.po.User">
        select  *  from user where username=#{username}
        </select>
    </mapper>
    
     

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    UserService 层:
        接口:
    public interface UserService {
    
        User findByName(User user);
    
    }
        实现类:
    
    @Service
    public class UserServiceimp implements UserService {
    
        @Autowired
        private UserDaoMapper userDao;
    
        @Override
        public User findByName(User user) {
            // TODO Auto-generated method stub
            
            return  userDao.findByName(user);
        }
    
    }

    Controller层
        
    @Controller
    //可以避免企业开发人员的功能模块访问url冲突
    @RequestMapping("/user")
    public class LoginController {
    
        @Autowired
        private UserService userService;
    
        @RequestMapping("/login")
        public String login(User user, HttpServletRequest request) {
     
            User users = userService.findByName(user);
            System.out.println(user.getUsername());
            if (users != null) {    
                String name = users.getUsername();
                if (name != null && name.length() > 0) {
                    HttpSession session = request.getSession();
                    session.setAttribute("username", name);
                    return "success";
                } else {
                    return "redirect:/error.jsp";
                }
            } else {
                return "redirect:/login.jsp";
            }
        }
    }

    web.xml
        <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns="http://java.sun.com/xml/ns/javaee"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    	id="WebApp_ID" version="2.5">
    	<display-name>springmvcssm</display-name>
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.htm</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>default.html</welcome-file>
    		<welcome-file>default.htm</welcome-file>
    		<welcome-file>default.jsp</welcome-file>
    	</welcome-file-list>
    	<filter>
    		<filter-name>CharacterEncodingFilter</filter-name>
    		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    		<init-param>
    			<param-name>encoding</param-name>
    			<param-value>utf-8</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>CharacterEncodingFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:applicationContext-*.xml</param-value>
    	</context-param>
    
    	<servlet>
    		<servlet-name>springmvc</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>classpath:springMvc.xml</param-value>
    		</init-param>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>springmvc</servlet-name>
    		<url-pattern>*.action</url-pattern>
    	</servlet-mapping>
    </web-app>
    

    jsp页面:
        <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="${pageContext.request.contextPath}/user/login.action" method="post">
    		用户名<input type="text" name="username"> 
    		<input type="submit" value="提交">
    	</form>
    </body>
    </html>
    

    POJO(User)类:
        
    public class User {
    
        private int id;
        private String username;// 用户姓名
        private String sex;// 性别
        private Date birthday;// 生日
        private String address;// 地址
        
        private List<Items> ordersList;
        
        
        
        
        public List<Items> getOrdersList() {
            return ordersList;
        }
        public void setOrdersList(List<Items> ordersList) {
            this.ordersList = ordersList;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        @Override
        public String toString() {
            return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
                    + address + "]";
        }
    
        
    }

      可以直接运行测试登录代码

     

     

     

     

     

  • 相关阅读:
    linux下安装MongoDB
    Prometheus+Grafana企业监控系统
    微服务项目运维管理
    Jenkins CI&CD 自动化发布项目实战(上篇)
    Docker入门与进阶(下)
    Docker入门与进阶(上)
    Git&Gitlab开发流程与运维管理
    报名中|面基啦~首站深圳线下云原生技术开放日来了
    kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析
    使用 Velero 跨云平台迁移集群资源到 TKE
  • 原文地址:https://www.cnblogs.com/sjzxs/p/9536602.html
Copyright © 2020-2023  润新知