SSM实现添加查询,简单SSM框架

Posted 彭祥.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM实现添加查询,简单SSM框架相关的知识,希望对你有一定的参考价值。

今天,博主给大家分享一个SSM项目的简单框架,即SSM项目的简单搭建过程。
首先我们先对mybatis进行测试
对数据持久层进行测试
这块代码是只有mybatis的,其是通过获取sqlsession的方式进行数据操作的

public void sessionFactory() throws Exception{
		//创建SqlSessionFactory的builder构造器
		SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
		//加载sqlMapConfig.xml
		InputStream is=Resources.getResourceAsStream("sqlMapConfig.xml");
		//创建SqlSessionFactory
		SqlSessionFactory factory=builder.build(is);
		//打开sqlsession
		SqlSession sqlsession=factory.openSession();
		//获取mapper接口的对象代理类对象
		UserMapper usermapper=sqlsession.getMapper(UserMapper.class);
		//操作
		User user=new User();
		
		user.setUname("票系");
		user.setPassword("123456");
		usermapper.saveUser(user);
		//提交事务
		sqlsession.commit();
		sqlsession.close();	}

整合了spring的mybatis,此时,其将sqlsession直接放入了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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 读取 jdbc.properties -->
	
	<context:property-placeholder location="classpath:jdbc.properties" /> 
	<!-- 创建 DataSource 使用DBCP数据连接池-->
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="url" value="${jdbc.url}" />
		<property name="driverClassName" value="${jdbc.driver}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<property name="maxActive" value="10" />
		<property name="maxIdle" value="5" /><!-- 最大空闲数 -->
	</bean> <!-- 创建 SqlSessionFactory 对象 -->
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 关联连接池  创建sqlsession对象-->
		<property name="dataSource" ref="dataSource" /> <!-- 加载 sql 映射文件 加载-->
		<property name="mapperLocations" value="classpath:mapper/*.xml" />
	</bean>
	
	
	<!-- 如果使用了mapper接口包扫描,那么每个mapper接口再spring容器中的id名为类名,如UserMapper为usermapper -->
	
	<!-- Mapper 接口的扫描 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
	<!-- 配置 Mapper 接口所在包路径 -->
		<property name="basePackage" value="dao" />
		
	</bean>
</beans>

在调用时,只需要读取相应的配置文件,然后再将spring容器中的sqlsession获取到即可

public void addtest(){
		ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
		//获取对象
		UserMapper usermapper=(UserMapper) ac.getBean("userMapper");
		//调用方法
		User user=new User();
		user.setUname("白居易");
		user.setPassword("123456");
		usermapper.saveUser(user);
	}

在确认我们的项目没有问题后再进行整合,看项目目录
在这里插入图片描述
然后我们要配置的文件内容有:
数据库连接文件 jdbc.properties

jdbc.url = jdbc\\:mysql\\:///book_store
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username= root
jdbc.password= 

spring整合mybatis文件
applicationContext.xml
在该文件中,我们要进行数据库连接,开启事务扫描mapper包等

<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 读取 jdbc.properties -->
	
	<context:property-placeholder location="classpath:jdbc.properties" /> 
	<!-- 创建 DataSource 使用DBCP数据连接池-->
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="url" value="${jdbc.url}" />
		<property name="driverClassName" value="${jdbc.driver}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<property name="maxActive" value="10" />
		<property name="maxIdle" value="5" /><!-- 最大空闲数 -->
	</bean> <!-- 创建 SqlSessionFactory 对象 -->
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 关联连接池  创建sqlsession对象-->
		<property name="dataSource" ref="dataSource" /> <!-- 加载 sql 映射文件 加载-->
		<property name="mapperLocations" value="classpath:mapper/*.xml" />
	</bean>
		
	<!-- 如果使用了mapper接口包扫描,那么每个mapper接口再spring容器中的id名为类名,如UserMapper为usermapper -->
	
	<!-- Mapper 接口的扫描 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
	<!-- 配置 Mapper 接口所在包路径 -->
		<property name="basePackage" value="dao" />		
	</bean>	
	<!-- 开启springde ioc扫描注解 -->
	<context:component-scan base-package="service"/>
	<!-- 事务管理器 -->
	<bean id="transactionManager"		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean> 
	<!-- 启用 Spring 事务注解 -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
</beans>

spring整合springmvc文件
spring-mvc.xml
在该文件中,我们要扫描所有的Controller并进行注解驱动,设置编码格式

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:contenxt="http://www.springframework.org/schema/context"
    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.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- 扫描Controller所在的包 -->
	<contenxt:component-scan base-package="controller"/>

	<!-- 注解驱动 -->
	<mvc:annotation-driven></mvc:annotation-driven>
	<!-- 启用Spring MVC的注解开发模式 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=utf-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
	<!-- 视图解析器:简化访问路径,简化在Controller类编写的视图路径 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 前缀 -->
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<!-- 后缀 -->
		<property name="suffix" value=".jsp"/>
	</bean>
</beans>

启动spring与springmvc,设置编码格式

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>mybatis_spring_transaction</display-name>
  <!-- 启动springmvc  实质是启动servlet -->
  <servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 参数:读取spring-mvc.xml -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<url-pattern>*.action</url-pattern>
	</servlet-mapping>
  <!-- 启动spring 通过启动类-->
  <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>
	
	<filter>
        <filter-name>characterFilter</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>characterFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
	
  <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>
</web-app>

紧接着。整个项目便已配置完成,接下来便是进行测试是否能够正常访问,即测试springmvc的功能

@Controller
@RequestMapping("/user")
public class UserController {
	@RequestMapping("/test")    //最终的访问路径为项目名/user/test.action
	public String test(){
		return "test";
}
}

如图所示:
在这里插入图片描述
测试访问页面成功后,我们写一个上传信息页面,包含上传图片
在这里插入图片描述
页面很丑,先忍耐,我们待会会进行界面美化

@Controller
@RequestMapping("/good")
public class GoodsController {
	@Autowired
	GoodsService gs;
	@RequestMapping("/save")
	public String save(MultipartFile file, Good good,HttpServletRequest request) {//这是保存上传的controller
		try {
			return gs.save(file, good,request);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	@RequestMapping("/list")
    public String listUser( Model model){
        List<Good> list= gs.list(); 
        model.addAttribute("list",list);
        System.out.println(list);
        return "list";
    }
	@RequestMapping("/test")
	public String test(){
		return "test";
	}

}

服务层代码,进行图片上传处理,此处博主对上传进行了封装

@Service("GoodsService")
@Transactional
public class GoodsServiceImpl implements GoodsService{
	@Autowired
	private GoodsMapper gm;
	@Override
	@Transactional
	public String save(MultipartFile file, Good good, HttpServletRequest request) throws IOException {
		
		// 保存图片的路径,图片上传成功后,将路径保存到数据库
		String newFileName="";
		FileUploadUtil f=new FileUploadUtil();
		newFileName=f.uploadSingleFile(file, request);
		// 保存到数据库
		good.setImage(newFileName);
		gm.saveGoods(good);
		return "redirect:/user/test.action";
	}
	@Override
	public List<Good> list() {
		// TODO Auto-generated method stub
		return gm.findAllGood();
	}

}

封装的图片上传工具类

public static String uploadSingleFile(MultipartFile file, HttpServletRequest request) {
		String path = null;
		String originalFilename = file.getOriginalFilename();
		if (!originalFilename.equals("")) {
			// 得到上传文件的文件扩展名
			String newFileName = System.currentTimeMillis() + originalFilename;
			// 得到上传文件保存路径的服务器端硬盘物理路径
			String savePath = request.getServletContext().getRealPath("/img");
			File f = new File(savePath);
			if (!f.exists()) {
				f.mkdirs();
			}
			// 文件上传
			try {
				File targetFile = new File(savePath, newFileName);
				file.transferTo(targetFile);
				path="img/"+newFileName;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		System.out.println(path);
		return path;
	}

完成这些后,我们便可以进行测试,其中与此同时我们还写了查询操作
看下页面
在这里插入图片描述
此处博主使用的是bootstrap框架,如此,我们便使用SSM框架完成了一个简单的项目上传图片并查询信息的功能,这是我们在开发时常用的小功能模块,后续我们可以在已配置好的框架上进行其他功能的开发。
码字不易,给个赞呗!

以上是关于SSM实现添加查询,简单SSM框架的主要内容,如果未能解决你的问题,请参考以下文章

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

超级简单javaweb项目SSM用户管理登录注册查询添加删除修改操作.rar(含源码)

ssm项目实现删除操作后如何使查询出来的数据页面自动刷新?

SSM 轻量级框架构建:图书管理系统

ssm框架 怎么用ajax查询从数据库读取数据 返回json格式

基于SSM框架实现简单的登录注册