jsp整合mybatis案例

View视图层:注册页面

 

<form action="regServlet" method="post">
    	账号:<input type="text" name="username"/><br/>
    	密码:<input type="password" name="pwd"/><br/>
    	确认密码:<input type="password" name="repwd"/><br/>
    	爱好:<input type="checkbox" name="hobby" value="读书"/>读书
    	<input type="checkbox" name="hobby" value="旅游"/>旅游
    	<input type="checkbox" name="hobby" value="逛街"/>逛街
    	<br/>
    	<input type="submit" value="注册"/>"
    </form>


显示所有页面的jsp代码

 

 

<table border="1" width="100%">
  	<tr>
  		<td>账户</td><td>密码</td><td>爱好</td><td colspan="3">操作</td>
  	</tr>
    <c:forEach items="${list}" var="m">
    	<tr>
    		<td>${m["USERNAME"] }</td>
    		<td>${m["PWD"] }</td>
    		<td>${m["AIHAO"] }</td>
    		<td><a href='zhuce.jsp'>增加</a></td>
    		<td><a href='delServlet?username=${m["USERNAME"] }'>删除</a></td>
    		<td><a href='javascript:alert("a")'>删除</a></td>
    	</tr>
    </c:forEach>
    </table>


web.xml配置文件

 

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>zhuce.jsp</welcome-file>
  </welcome-file-list>
  <!-- 配置servlet -->
  <servlet>
  	<servlet-name>regServlet</servlet-name>
  	<servlet-class>com.controller.RegServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>allServlet</servlet-name>
    <servlet-class>com.controller.AllServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>DelServlet</servlet-name>
    <servlet-class>com.controller.DelServlet</servlet-class>
  </servlet>


  <servlet-mapping>
  	<servlet-name>regServlet</servlet-name>
  	<url-pattern>/regServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>allServlet</servlet-name>
    <url-pattern>/allServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>DelServlet</servlet-name>
    <url-pattern>/delServlet</url-pattern>
  </servlet-mapping>
</web-app>


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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
				<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
				<property name="username" value="scott"/>
				<property name="password" value="tiger"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/mapper/UserinfoMapper.xml"/>
	</mappers>
</configuration>

返回SqlSession对象的公共类

 

 

package com.util;

import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
//公共类,读取config.xml文件,用来和数据库建立联系
//The AdapterNet wrong:修改config.xml为ip地址
public class SSFU {
	public static SqlSession getSqlSession(){
		Reader reader=null;
		SqlSessionFactory factory=null;
		SqlSession session=null;
		try {
			reader = Resources.getResourceAsReader("config.xml");
			factory=new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				if(reader!=null){reader.close();}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}	
		return factory.openSession();
		
	}
}	


model层

 

实体类:

 

package com.model;
//用户信息实体类
public class Userinfo {
	private String username;
	private String pwd;
	private String aihao;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getAihao() {
		return aihao;
	}
	public void setAihao(String aihao) {
		this.aihao = aihao;
	}
	
	
}

接口业务定义:

 

 

package com.biz;

import java.util.List;
import java.util.Map;
import com.model.Userinfo;

//接口,定义了4个抽象方法,增删改查,对userinfo表
public interface UserinfoMapper {
	
	public int insertUserinfo(Userinfo u);
	public int updateUserinfo(Userinfo u);
	public int deleteUserinfo(Userinfo u);
	public List<Map>selectAll();//无参数;
}


接口对应的映射文件

 

 

<?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">
<!--这个映射文件,相当于接口的实现类,4个方法,现在4个实现. -->
<mapper namespace="com.biz.UserinfoMapper">
	<insert id="insertUserinfo" parameterType="com.model.Userinfo">
		insert into userinfo values(#{username},#{pwd},#{aihao})
	</insert>
	<update id="updateUserinfo"  parameterType="com.model.Userinfo">
		update userinfo set pwd=#{pwd} where username=#{username}
	</update>
	<delete id="deleteUserinfo"  parameterType="com.model.Userinfo">
		delete from userinfo where username=#{username}
	</delete>
	<select id="selectAll" resultType="java.util.Map">
		select * from userinfo
	</select>
</mapper>

控制层,控制器

 

注册Servlet

 

package com.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.session.SqlSession;

import com.biz.UserinfoMapper;
import com.model.Userinfo;
import com.util.SSFU;
//作用是一个控制器,一手托view,一手托model
public class RegServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//0.解决乱码
		req.setCharacterEncoding("utf-8");
		
		//1.接受从zhuce页面传过来的数据;
		String username=req.getParameter("username");//名字不一样,会报NUllpointerException
		String pwd=req.getParameter("pwd");
		String[]hobbys=req.getParameterValues("hobby");
		//1.2将爱好数组转化为字符串 ;
		String aihao="";
		for(int i=0;i<hobbys.length;i++){
			aihao+=hobbys[i]+",";
		}
		aihao=aihao.substring(0,aihao.length()-1);//截取最后的一个","
		//*********************************
		//操作model对象;新增对象;
		Userinfo u=new Userinfo();
		u.setUsername(username);
		u.setPwd(pwd);
		u.setAihao(aihao);
		
		//真正的存放到数据库,利用mybatis
		SqlSession session =SSFU.getSqlSession();
		UserinfoMapper um = session.getMapper(UserinfoMapper.class);
		um.insertUserinfo(u);
		session.commit();
		session.close();
		//将数据放到session,然后重定向;这个是假的增加数据;
		HttpSession hsession=req.getSession();
		hsession.setAttribute("u",u);//设置session的属性,存放刚才的对象;
		
		resp.sendRedirect("chenggong.jsp");
	
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doGet(req, resp);
	}
	
}


查找所有Servlet

 

 

package com.controller;


import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.session.SqlSession;

import com.biz.UserinfoMapper;
import com.util.SSFU;
//查询所有用户信息的控制器;
public class AllServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//从数据库查询所有信息;
		SqlSession session =SSFU.getSqlSession();
		UserinfoMapper um = session.getMapper(UserinfoMapper.class);
		List<Map>list=um.selectAll();
		System.out.println(list.size());
		for(Map map:list){
			System.out.println("姓名:"+map.get("USERNAME")+",密码:"+map.get("PWD")+",爱好:"+map.get("AIHAO"));
		}
		
		session.commit();
		session.close();
		HttpSession hsession=req.getSession();
		hsession.setAttribute("list", list);
		resp.sendRedirect("showAll.jsp");
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doGet(req, resp);
	}
}


读者可以在此基础上,完善下修改 和删除操作,如果修改和删除,是汉字的话,可能会有get传值乱码问题,可以到tomcat的conf目录下,修改server.xml,在connector标签下,增加URIEncoding="utf-8"即可。

 


 

 

Spring+SpringMVC+MyBatis框架技术整合是目前Java企业级应用开发中最为流行的技术组合之一。在这个技术组合中,Spring负责IoC和AOP,SpringMVC则是MVC框架,而MyBatis则是ORM框架。 下面是一个简单的整合案例: 1. 首先,我们需要创建一个Maven项目,并添加Spring、SpringMVC和MyBatis的依赖: ```xml <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.3.RELEASE</version> </dependency> <!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.3.RELEASE</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> ``` 2. 接着,我们需要配置Spring、SpringMVC和MyBatis的配置文件。在这里,我们使用注解方式配置Spring和SpringMVC,而使用XML方式配置MyBatis。 Spring配置文件: ```java @Configuration @ComponentScan(basePackages = "com.example") @EnableWebMvc public class AppConfig { // ... 配置其他Bean @Bean public DataSource dataSource() { // 配置数据源 return new DriverManagerDataSource(); } @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); // 配置MyBatis插件 Interceptor[] plugins = {pageHelper()}; sessionFactory.setPlugins(plugins); // 配置MyBatis映射文件 sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath*:mapper/*.xml")); return sessionFactory.getObject(); } @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); scannerConfigurer.setBasePackage("com.example.mapper"); scannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); return scannerConfigurer; } @Bean public PageInterceptor pageHelper() { PageInterceptor pageInterceptor = new PageInterceptor(); Properties properties = new Properties(); properties.setProperty("helperDialect", "mysql"); pageInterceptor.setProperties(properties); return pageInterceptor; } } ``` SpringMVC配置文件: ```java @Configuration public class WebConfig implements WebMvcConfigurer { // ... 配置其他内容 @Bean public ViewResolver viewResolver() { // 配置视图解析器 InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 配置静态资源 registry.addResourceHandler("/static/**") .addResourceLocations("/static/"); } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } } ``` MyBatis配置文件: ```xml <configuration> <typeAliases> <!-- 配置别名 --> <package name="com.example.model"/> </typeAliases> <mappers> <!-- 配置映射文件 --> <mapper resource="mapper/userMapper.xml"/> </mappers> <!-- 配置分页插件 --> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="mysql"/> </plugin> </plugins> </configuration> ``` 3. 接着,我们需要创建Controller和Mapper接口以及对应的视图和映射文件。这里我们以用户管理为例: UserController.java: ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/list", method = RequestMethod.GET) public String list(Model model) { List<User> users = userService.getAllUsers(); model.addAttribute("users", users); return "user/list"; } @RequestMapping(value = "/add", method = RequestMethod.GET) public String addForm() { return "user/add"; } @RequestMapping(value = "/add", method = RequestMethod.POST) public String add(User user) { userService.addUser(user); return "redirect:/user/list"; } @RequestMapping(value = "/edit/{id}", method = RequestMethod.GET) public String editForm(@PathVariable("id") Long id, Model model) { User user = userService.getUserById(id); model.addAttribute("user", user); return "user/edit"; } @RequestMapping(value = "/edit", method = RequestMethod.POST) public String edit(User user) { userService.updateUser(user); return "redirect:/user/list"; } @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) public String delete(@PathVariable("id") Long id) { userService.deleteUser(id); return "redirect:/user/list"; } } ``` UserMapper.java: ```java public interface UserMapper { List<User> getAllUsers(); User getUserById(Long id); void addUser(User user); void updateUser(User user); void deleteUser(Long id); } ``` userMapper.xml: ```xml <mapper namespace="com.example.mapper.UserMapper"> <resultMap id="userMap" type="com.example.model.User"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="age" column="age" /> </resultMap> <select id="getAllUsers" resultMap="userMap"> SELECT * FROM user </select> <select id="getUserById" resultMap="userMap"> SELECT * FROM user WHERE id = #{id} </select> <insert id="addUser" useGeneratedKeys="true" keyProperty="id"> INSERT INTO user(name, age) VALUES(#{name}, #{age}) </insert> <update id="updateUser"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUser"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` 4. 最后,我们需要配置web.xml文件,启动Spring容器和SpringMVC DispatcherServlet。 web.xml: ```xml <web-app> <display-name>MyApp</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/config/spring/appConfig.java</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/config/spring/webConfig.java</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` 这样,我们就完成了Spring+SpringMVC+MyBatis框架技术的整合。在实际开发中,我们可以根据需求进行修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teayear

读后有收获可以获取更多资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值