SSM框架之--Spring,SpringMVC,MyBaties三大框架整合

三大框架整合之配置SpringMVC

配置前端控制器

在配置前端控制器之前导入相关的开发包,并把包的结构创建好
这是我创建的包结构
在web.xml中配置前端控制器,并且指定springmvc的核心位置文件的位置,前端控制器的本质是一个servlet
在web.xml中的配置

##在核心配置文件中 配置视图解析器
配置映射到网页的前缀和后缀,prefix表示前缀 suffix表示后缀
在这里插入图片描述

三大框架整合之配置Spring

配置spring

在src目录下创建applicationContext.xml文件(这里的文件名可以随意取)
在这里插入图片描述

三大框架整合之整合Spring与SpringMVC

在web.xml中添加一个监听器,监听应用的创建,使Spring容器在web初始化时就创建 配置监听器,用于创建和销毁容器
下面展示一些 web.xml中的配置

// A code block
	 <!--Spring与SpringMVC的整合-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--配置Spring的核心配置文件位置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/applicationContext.xml</param-value>
    </context-param>
 <!--Spring与SpringMVC的整合-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--配置Spring的核心配置文件位置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/applicationContext.xml</param-value>
    </context-param>

配置完成以后,理论上Spring与SpringMVC已经整合在一起了,接下来可以编写代码进行测试
在service层的代码`。

// A code block
@Service
public class UserServiceImpl implements UserService{
    @Override
    public void addUser() {
        System.out.println("测试Spring整合SpringMVC");
    }
}
@Service
public class UserServiceImpl implements UserService{
    @Override
    public void addUser() {
        System.out.println("测试Spring整合SpringMVC");
    }
}

在web层的代码测试`。

// A code block
@Controller
@RequestMapping("/my01")
public class MyControllor01 {
    @Autowired
    private UserService userService = null;
    @RequestMapping("/test01.action")
    public void test01(){
        System.out.println("my01test01...");
        userService.addUser();
    }
}
// An highlighted block
@Controller
@RequestMapping("/my01")
public class MyControllor01 {
    @Autowired
    private UserService userService = null;
    @RequestMapping("/test01.action")
    public void test01(){
        System.out.println("my01test01...");
        userService.addUser();
    }
}
开启服务器,访问网址为locallhost:/my01/test01.action
在控制台查看输出内容,出现以下内容表示整合成功

在这里插入图片描述

整合Spring与MyBaties

配置MyBaties

在src下创建sqlMapConfig 里面只有一个configure标签,没有其他内容,注意:虽然这里的salMapConfig里面没有内容,但是这个文件不可省略
在src下创建一个包,里面用于创建xxxmapper.xml,即MyBaties的核心配置文件,在核心配置文件中写sql语句

创建bean

为了方便测试准备了一些数据,创建与数据库对应的bean ,并插入相应的bean属性,get,set方法

这是我准备的数据库的内容
这是创建的Bean,这里的名字与数据库里的列名相对应,如果不对应不能进行自动封装bean,需要自己手动指定映射关系在这里插入图片描述

配置数据源

由于数据库中的数据不止在MyBaties中需要使用,所以数据源不能配置在sqlMapConfig.xml中,需要配置在整个Spring中,所以应该在applicationContext.xml中配置数据源,对于配置数据源为了以后不用修改源代码,数据源的四大金刚一般情况下配置在配置文件中
编写一个jdbc.properties配置文件
在这里插入图片描述

在applicationContext.xml中配置数据源
下面展示一些 内联代码片

// A code block
 <!--引入外部配置文件-->
    <context:property-placeholder location="classpath:/jdbc.properties"/>
    <!--配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${driverClass}"/>
        <property name="jdbcUrl" value="${jdbcUrl}"/>
        <property name="user" value="${user}"/>
        <property name="password" value="${password}"/>
    </bean>
 <!--引入外部配置文件-->
    <context:property-placeholder location="classpath:/jdbc.properties"/>
    <!--配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${driverClass}"/>
        <property name="jdbcUrl" value="${jdbcUrl}"/>
        <property name="user" value="${user}"/>
        <property name="password" value="${password}"/>
    </bean>

其中的 d r i v e r C l a s s , {driverClass}, driverClass,{jdbcUrl}与配置文件的key值相对应

Spring整合MyBaties

主要配置MyBaties所需要的三大内容,数据源,恶心文件位置,配置文件位置,代码如下
下面展示一些 内联代码片

// A code block
<!--整合MyBaties-->
    <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--配置数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--配置sqlMapConfig的位置-->
        <property name="configLocation" value="classpath:/sqlMapConfig.xml"/>
        <!--配置核心配置文件的位置-->
        <property name="mapperLocations" value="classpath:/mapper/*.xml"/>
    </bean>
<!--整合MyBaties-->
    <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--配置数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--配置sqlMapConfig的位置-->
        <property name="configLocation" value="classpath:/sqlMapConfig.xml"/>
        <!--配置核心配置文件的位置-->
        <property name="mapperLocations" value="classpath:/mapper/*.xml"/>
    </bean>

整合完MyBaties后,由于我们的MyBaties的sql操作通过接口实现,所以还需要配置一个MyBaties扫描器,将这个接口交由Spring管理,以降低耦合性
下面展示一些 内联代码片

// A code block
 <!--配置MyBaties扫描器,负责为mapperBean生成实现类-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xyxhu.mapper"/>
    </bean>
 <!--配置MyBaties扫描器,负责为mapperBean生成实现类-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xyxhu.mapper"/>
    </bean>

测试三大框架的整合

//创建一个userMapper,命名空间与接口的全路径名一致,
<mapper namespace="com.xyxhu.mapper.UserMapper">
    <select id="selectById" resultType="com.xyxhu.domain.User">
        select * from user where id = #{id};
    </select>
//编写接口中的函数,注意三点
//函数名与userMapper中的id一致,参数与userMapper中的参数一致
//返回类型与userMapper的返回值类型一致
public interface UserMapper {
    public User selectById(int id);
}
//在service层中编写函数调用UserMapper的方法
 @Autowired
    private UserMapper userMapper = null;
    public User selectById(int id) {
        return userMapper.selectById(id);
    }
//在service层中编写函数调用UserMapper的方法
 @Autowired
    private UserMapper userMapper = null;
    public User selectById(int id) {
        return userMapper.selectById(id);
    }
//在web层调用service层的方法进行展示
    @Autowired
    private UserService userService = null;
    User user = userService.selectById(5);
        System.out.println(user);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值