springMVC+spring+Ibatis增删改查的demo

来源:互联网 发布:多益网络账号格式错误 编辑:程序博客网 时间:2024/05/20 04:12

上一篇文章写了springMVC+spring+hibernate的demo。这次我们把ORM框架换掉换成Ibatis。

需要的jar包:


demo结构:


下面看配置文件,主要有5个(beans.xml(spring的配置文件),(sqlmap-config.xml)Ibatis的配置文件,

user-config.xml(对象实体配置文件),springmvc-servlet.xml(springmvc的配置文件),web.xml文件)

beans.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:tx="http://www.springframework.org/schema/tx"       xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/springmvc?useUnicode=true&characterEncoding=UTF-8"/><property name="user" value="root"/><property name="password" value="123"/><property name="initialPoolSize" value="5"></property><property name="minPoolSize" value="5"></property><property name="maxPoolSize" value="15"/><property name="checkoutTimeout" value="1000"/> </bean>   <!-- 配置事务管理器 --><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">        <property name="configLocation" value="classpath:config/sqlmap-config.xml" />        <property name="dataSource" ref="dataSource" />    </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">    <property name="dataSource" ref="dataSource" /></bean><tx:annotation-driven transaction-manager="transactionManager"/><!-- 自动扫描(自动注入) --><context:component-scan base-package="com.springmvc" /></beans>
sqlmap-config.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig>  <!--多个配置文件-->  <sqlMap resource="com/springmvc/bean/User-config.xml"/>  </sqlMapConfig>
springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"><!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 --><context:component-scan base-package="com.springmvc.controller" /><!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp" /></beans>
user-config.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="User">    <typeAlias alias="User" type="com.springmvc.bean.User"/>     <resultMap id="UserResult" class="User">        <result property="userId" column="userId"/>        <result property="userName" column="userName"/>        <result property="age" column="age"/>           </resultMap>         <insert id="adduser" parameterClass="User">      insert user(userId,userName,age)      values(#userId#,#userName#,#age#)        </insert>            <select id="selall" resultClass="User">               select * from user        </select>        <select id="selById" parameterClass="int" resultClass="User">      select * from user  where userId=#userId#    </select>        <delete id="del" parameterClass="int">     delete from user where userId=#userId#        </delete>        <update id="update" parameterClass="User">      update user set       userName=#userName#,      age=#age#      where userId=#userId#    </update>  </sqlMap>
web.xml:


<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>SpringMVC</display-name>  <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>  <context-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath*:config/beans.xml</param-value>      </context-param>    <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener> <servlet>         <servlet-name>springmvc</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>           <param-name>contextConfigLocation</param-name>           <param-value>classpath*:config/Springmvc-servlet.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>    </web-app>
springmvc的控制器:

package com.springmvc.controller;import java.io.OutputStream;import java.net.URLDecoder;import java.util.List;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.springmvc.bean.User;import com.springmvc.dao.IUserDaoIbatis;/**springmvc的控制类 *  * @author 董政 * */@Controller@RequestMapping("/user")public class UserController {@Resourceprivate IUserDaoIbatis userservice;/** * 更新用户操作 * @param user 用户对象 * @param req  * @param rep */@RequestMapping("/update")public void update(User user,HttpServletRequest req,HttpServletResponse rep){try {rep.setContentType("text/html;charset=UTF-8");//获得输出流OutputStream printWriter=null;printWriter=rep.getOutputStream();//对字符串进行转码操作User newuser=null;//转码字符串 ,防止乱码newuser=new User(Integer.parseInt(URLDecoder.decode(user.getUserId().toString(), "utf-8")), URLDecoder.decode(user.getUserName(), "utf-8"), URLDecoder.decode(user.getAge(), "utf-8"));userservice.update(newuser);printWriter.write("su".getBytes());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 初始化界面 * @return */@RequestMapping("/index")public String toIndex(HttpServletRequest req,HttpServletResponse rep){//查找集合List<User> users=userservice.getAllUsers();//放入作用域中req.setAttribute("userlist", users);return "Index";}/** * 进入添加界面 * @return */@RequestMapping("/toadd")public String toAdd(){return "add";}/** * 初始化更新界面 * @param req * @param id * @return */@RequestMapping("/toUpdate")public String toUpdate(HttpServletRequest req,Integer id){//查找要更新的数据   User user=userservice.getUsrById(id);   //放入作用域req.setAttribute("user", user);return "Userinfo";}     /**      * 删除操作      * @param req 请求      * @param id 删除的id      * @param rep 响应      * @return      */@RequestMapping("/del")public String  del(HttpServletRequest req,Integer id,HttpServletResponse rep){    //删除对应的数据库数据userservice.delUser(id);//获取数据集合List<User> users=userservice.getAllUsers();//放入作用域req.setAttribute("userlist", users);return "Index"; }/** * 添加操作 * @param name 用户名 * @param age 年龄 * @param rep 响应 */@RequestMapping("/add")public void add(String name,String age,HttpServletResponse rep){try {//设置ajax的返回类型rep.setContentType("text/html;charset=UTF-8");//获得输出流OutputStream printWriter=null;//ʵ实例化输出流printWriter=rep.getOutputStream();User user=null;user = new User(null, URLDecoder.decode(name,"utf-8"), URLDecoder.decode(age,"utf-8"));userservice.addUser(user);//提示信息printWriter.write("su".getBytes());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

业务接口:

package com.springmvc.dao;import java.util.List;import com.springmvc.bean.User;public interface IUserDaoIbatis {    /**     * 添加用户操作     * @param user 用户     */public void addUser(User user);/** * 用户集合 * @return  集合类型 */public List<User> getAllUsers();/** * ͨ根据用户iD查询 * @param id * @return user */public User getUsrById(Integer UserId);/** * ɾ删除用户 * @param userId */public void delUser(Integer user);/** * 更新用户 * @param user */public void update(User user);}
实现类:

package com.springmvc.service;import java.sql.SQLException;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.ibatis.sqlmap.client.SqlMapClient;import com.springmvc.bean.User;import com.springmvc.dao.IUserDaoIbatis;@Service@Transactionalpublic class UserIbatisDao implements IUserDaoIbatis{@Resourceprivate SqlMapClient sqlMapClient;@Overridepublic void addUser(User user) {try {sqlMapClient.insert("adduser", user);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic List<User> getAllUsers() {List<User> users=null;try {users=sqlMapClient.queryForList("selall");} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return users;}@Overridepublic User getUsrById(Integer UserId) {User user=null;try {user=(User) sqlMapClient.queryForObject("selById", UserId);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return user;}@Overridepublic void delUser(Integer user) {try {sqlMapClient.delete("del", user);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void update(User user) {try {sqlMapClient.update("update", user);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
测试类:

package com.test;import java.util.List;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.springmvc.bean.User;import com.springmvc.dao.IUserDaoIbatis;public class TestUser {private static IUserDaoIbatis userDao;@BeforeClasspublic static void setUpBeforeClass() throws Exception {ApplicationContext cxt=new ClassPathXmlApplicationContext("/config/beans.xml");userDao=  (IUserDaoIbatis) cxt.getBean("userIbatisDao");}@Testpublic void test() {userDao.addUser(new User(null, "gg", "56"));}    @Testpublic void update(){userDao.update(new User(1, "sss", "11"));}@Testpublic void getAll(){List<User> list=userDao.getAllUsers();System.out.println(list.size());}@Testpublic void getOne(){System.out.println(userDao.getUsrById(1).getAge());}@Testpublic void del(){userDao.delUser(3);}}

截图:





原创粉丝点击