ssm整合

 结合Spring+SpringMVC+MyBatis实现CURD

1.项目文件

2.过程

2.1.导入依赖
<dependencies>
        <!--Junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
        <!--数据库连接池-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.5</version>
        </dependency>
        <!--Mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.13</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.2</version>
        </dependency>
        <!--spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.0.13</version>
        </dependency>
        <!--springmvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.0.13</version>
        </dependency>
    </dependencies>
2.2.建立实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
}
2.3.MyBatis配置文件

<?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>

    <typeAliases>
        <package name="com.sun.pojo"/>
    </typeAliases>

        <mappers>
            <mapper class="com.sun.dao.UserMapper"/>
        </mappers>

</configuration>

Mybatis配置了一个别名识别,一个映射路径就够了,原本要配置的数据源dataSource,现在交给spring了

2.4.数据库配置文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/user?useSSL=false&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
2.5.编写Dao层

2.5.1.UserMapper接口:
public interface UserMapper {
    //增加一个人
    int addUser(User user);

    //删除一个人
    int deleteUserById(@Param("id") int id);

    //修改一个人
    int updateUser(User user);

    //查询一个人
    User selectUserById(@Param("id") int id);

    //查询所有人
    List<User> selectAllUser();
}
2.5.2.UserMapper.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="com.sun.dao.UserMapper">

    <resultMap id="userMapper" type="com.sun.pojo.User">
        <result property="address" column="user_address"/>
    </resultMap>

    <insert id="addUser" parameterType="com.sun.pojo.User">
        insert into user.tb_user (id, name, age) VALUES (#{id},#{name},#{age})
    </insert>

    <delete id="deleteUserById" parameterType="int">
        delete from user.tb_user where id=#{id}
    </delete>

    <update id="updateUser" parameterType="com.sun.pojo.User">
        update user.tb_user set name=#{name},age=#{age} where id=#{id}
    </update>

    <select id="selectUserById" resultType="com.sun.pojo.User">
        select * from user.tb_user where id=#{id}
    </select>

    <select id="selectAllUser" resultType="com.sun.pojo.User">
        select * from user.tb_user
    </select>
</mapper>
2.6.编写Service层
2.6.1.UserService接口: 
public interface UserService {
    //增加一个人
    int addUser(User user);

    //删除一个人
    int deleteUserById(int id);

    //修改一个人
    int updateUser(User user);

    //查询一个人
    User selectUserById(int id);

    //查询所有人
    List<User> selectAllUser();
}
2.6.2.UserServiceImpl实现类: 
public class UserServiceImpl implements UserService{

    //引入Dao层
    private UserMapper userMapper;
    //set方法
    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public int addUser(User user) {
        return userMapper.addUser(user);
    }

    @Override
    public int deleteUserById(int id) {
        return userMapper.deleteUserById(id);
    }

    @Override
    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    @Override
    public User selectUserById(int id) {
        return userMapper.selectUserById(id);
    }

    @Override
    public List<User> selectAllUser() {
        return userMapper.selectAllUser();
    }
}
 2.7.spring-dao配置文件

Spring在Dao层的配置文件,主要做了以下事情

  • 关联数据库配置文件,连接数据库
  • 创建sqlSessionFactory(用来创建sqlSession)
  • 动态注入Dao层接口到Spring中(也可以自己写一个Dao层的实现类并手动注入Spring中)
<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--关联数据库的配置文件-->
    <context:property-placeholder location="classpath:database.properties"/>

    <!--数据库连接池-->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!--关联mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

    <!--配置Dao包扫描,可以动态的将Dao接口注入到Spring中,不用再编写实现类并放在Spring中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--注入sqlSessionFactory-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!--扫描Dao-->
        <property name="basePackage" value="com.sun.dao"/>
    </bean>



</beans>

这个Dao的包扫描中做了两件事:

  • 第一件是扫描Dao的包,并自动注入到Spring中
  • 第二件是将sqlSessionFactory注入到Dao层接口的IOC容器中

在之前我们这两件事是分成两步走的,现在只需要一个bean就能完成:

  • 之前是在Dao层的实现类中添加sqlSessionTemplate的set方法,并将这个类注入到Spring中,再引入sqlSessionFactory来生成sqlSessionTemplate
  • 详见:

      

    Spring-mybatis-CSDN博客

2.8.spring-service配置文件

Spring在Service层的配置文件主要做了以下几件事:

  • 扫描Service包,识别该包下的注解
  • 将UserServiceImpl实现类注入到Spring中
  • 配置声明式事务
<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--引入spring-dao.xml-->
    <!--<import resource="classpath:spring-dao.xml"/>-->

    <!--扫描service包-->
    <context:component-scan base-package="com.sun.service"/>

    <!--将业务类注入到spring中-->
    <bean id="UserServiceImpl" class="com.sun.service.UserServiceImpl">
        <property name="userMapper" ref="userMapper"/>
    </bean>

    <!--声明式事务配置-->
    <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    
</beans>
2.9.spring的配置文件

该配置文件的主要作用就是来让spring-dao,spring-service,还有之后要写的spring-mvc之间产生关联,否则像上面spring-service的配置文件中要引入spring-dao层的bean,就无法成功

 在配置之前需要让applicationContext.xml,spring-dao,spring-service,spring-mvc在同一个spring文件下

<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <!--让这三个配置文件起关联-->
    <import resource="classpath:spring-dao.xml"/>
    <import resource="classpath:spring-service.xml"/>
    <import resource="classpath:springmvc.xml"/>
    
</beans>
 2.10.spring-mvc配置文件
2.10.1.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"
         metadata-complete="true">
  <!--创建DispatchServlet-->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--关联一个spring配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--设置启动级别-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!-- 字符集过滤器 -->
  <filter>
    <description>字符集过滤器</description>
    <filter-name>encodingFilter</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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>
2.10.2.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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
    <context:component-scan base-package="com.sun.controller"/>

    <!-- 让Spring MVC不处理静态资源 -->
    <mvc:default-servlet-handler />

    <!--代替处理器映射器和处理器适配器-->
    <!--解决json乱码配置-->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>



    <!--视图解析器:DispatcherServlet给他的ModelAndView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

到此,spring配置文件已经配置完了

2.11.编写controller层
@Controller
@RequestMapping("/user")
public class UserController {

    //要调用service层
    @Autowired
    @Qualifier("UserServiceImpl")
    private UserService userService;
    //查询所有人
    @RequestMapping("/select")
    public String selectAllUser(Model model){
        System.out.println("11111111");
        List<User> users = userService.selectAllUser();
        model.addAttribute("users",users);
        return "allUser";
    }
}
  • 引入service层,将userService对象注入到service层的实现类的bean中,才能在controller层调用service层的业务
  • 编写ModelAndView,接收数据和跳转视图
  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值