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(含源码)