MyBatis3整合spring MVC注解

接着上一个例子继续整合

结构图:

MyBatis3整合spring MVC注解 - zhaoweixs - 渐行渐远 回忆如秋

 

1. jar(用的以前的项目的jar 有些事多余的 没简化)

MyBatis3整合spring MVC注解 - zhaoweixs - 渐行渐远 回忆如秋

 

MyBatis3整合spring MVC注解 - zhaoweixs - 渐行渐远 回忆如秋

 

MyBatis3整合spring MVC注解 - zhaoweixs - 渐行渐远 回忆如秋

 

MyBatis3整合spring MVC注解 - zhaoweixs - 渐行渐远 回忆如秋

 

MyBatis3整合spring MVC注解 - zhaoweixs - 渐行渐远 回忆如秋

 2. app.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/aop  
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
        http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context-3.0.xsd  
        http://www.springframework.org/schema/mvc  
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
        http://www.springframework.org/schema/tx  
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
 <context:annotation-config/>
 <context:component-scan base-package="com.batis"></context:component-scan>
 <context:property-placeholder location="classpath:db.properties"/>
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
  <!-- <property name="prefix" value="WEB-INF/classes/com/batis/view/"></property> -->
  <property name="prefix"  value="WEB-INF/request/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>
 <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="defaultEncoding" value="utf-8"></property>
 </bean>
 <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="${driver}"></property>
  <property name="url" value="${url}"></property>
  <property name="username" value="${username}"></property>
  <property name="password" value="${password}"></property>
 </bean>
 <bean id="sqlsessionfactory" class="com.hotent.core.mybatis.SqlSessionFactoryFactoryBean">
  <property name="configLocation" value="classpath:configuration.xml"></property>
  <property name="dataSource" ref="datasource"></property>
 </bean>
 <bean id="txmanager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="datasource"></property>
 </bean>
 <tx:advice id="advice" transaction-manager="txmanager">
  <tx:attributes>
   <tx:method name="get*" propagation="NOT_SUPPORTED"/>
   <tx:method name="save*" propagation="REQUIRED"/>
   <tx:method name="update*" propagation="REQUIRED"/>
   <tx:method name="delete*" propagation="REQUIRED"/>
  </tx:attributes>
 </tx:advice>
 <aop:config>
  <aop:pointcut expression="execution(* com.batis.dao.*.*(..))" id="pointcut"/>
  <aop:advisor advice-ref="advice" pointcut-ref="pointcut"></aop:advisor>
 </aop:config>
</beans>

最后的页面路径为controller的requestMapping+配置文件里的prefix+ModalAndView里的视图名+suffix

3. mybatis配置文件 configuration.xml

<?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>
 <properties resource="db.properties"></properties>
 <environments default="development">
  <environment id="development">
   <transactionManager type="jdbc"/>
   <dataSource type="pooled">
    <property name="url" value="${url}"/>
    <property name="driver" value="${driver}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
   </dataSource>
  </environment>
 </environments>
 <mappers>
  <mapper resource="com/batis/data/MyUser.map.xml"/>
 </mappers>
</configuration>

4. 数据库属性文件 db.properties

driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=scott
password=sa

5. controller

package com.batis.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.batis.dao.BatisDao;
import com.batis.data.MyUser;
import com.batis.service.BatisService;

@Controller
@RequestMapping("")
public class MyUserController {
 @Resource(name="service")
 private BatisService service;

 public BatisService getService() {
  return service;
 }

 public void setService(BatisService service) {
  this.service = service;
 }

 @RequestMapping("totest")
 public ModelAndView toTest(){
  MyUser user=new MyUser();
  user.setAddress("c");
  user.setName("c");
  user.setAge(211);
  List list=service.getbydy(user);
  System.out.println(list.size());
  Map<String, Object> map =new HashMap<String,Object>();
  map.put("result", 0);
  return new ModelAndView("result",map);
 }
}
6. dao BaseDao

package com.batis.dao;

import java.io.IOException;
import java.io.Reader;

import javax.annotation.Resource;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.stereotype.Repository;
@Repository
public class BaseDao {
 @Resource(name="sqlsessionfactory")
 private SqlSessionFactory factory=null;
 public SqlSessionFactory getFactory() {
  return factory;
 }
 public void setFactory(SqlSessionFactory factory) {
  factory = factory;
 }
 private static ThreadLocal<SqlSession> sessions=new ThreadLocal<>();
 
 public SqlSession getSession(){
  SqlSession session=null;
  if (sessions.get()!=null) {
   session=null;
   sessions.set(null);
  }
  session=factory.openSession();
  sessions.set(session);
  return session;
 }
 public void closeSession(){
  SqlSession session=sessions.get();
  if (session!=null) {
   session.close();
   session=null;
   sessions.set(null);
  }
 }
}
BatisDao:

package com.batis.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.batis.data.MyUser;
@Repository("dao")
public class BatisDao extends BaseDao {
 public int save(MyUser user){
  SqlSession session=this.getSession();
  session.insert("com.zhaowei.insertuser", user);
  session.commit();
  this.closeSession();
  return 0;
 }
 public void update(MyUser user){
  SqlSession session=this.getSession();
  session.update("com.zhaowei.updateuser",user);
  session.commit();
  this.closeSession();
 }
 public void delete(long id){
  SqlSession session=this.getSession();
  session.delete("com.zhaowei.deleteuser", id);
  session.commit();
  this.closeSession();
 }
 public List getAll(){
  SqlSession session=this.getSession();
  List list=session.selectList("com.zhaowei.getalluser");
  this.closeSession();
  return list;
 }
 public List getByDy(MyUser user){
  SqlSession session=this.getSession();
  List list=session.selectList("com.zhaowei.getuserbydy", user);
  this.closeSession();
  return list;
 }
 public static void main(String[] args) {
  try {
   BatisDao bd=new BatisDao();
   MyUser user=new MyUser();
   user.setAddress("bb");
   user.setName("bb");
   user.setAge(21);
   user.setId(1);
//   bd.update(user); ok
//   bd.save(user); ok
//   List list=bd.getAll();
//   System.out.println(list.size()); ok
//   bd.delete(id) ok
   List list=bd.getByDy(user);
   System.out.println(list.size());
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}
7. 实体类 MyUser

package com.batis.data;

import com.batis.dao.BaseDao;

public class MyUser {
 private int id;
 private String name;
 private String address;
 private int age;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
}
映射文件:MyUser.map.xml (名称随意 可以在configuration里配置)

<?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">
<mapper namespace="com.zhaowei">
 <resultMap type="com.batis.data.MyUser" id="myuser">
  <id column="id" jdbcType="NUMERIC" property="id"/>
  <result column="name" property="name" jdbcType="VARCHAR"/>
  <result column="address" property="address" jdbcType="VARCHAR"/>
  <result column="age" property="age" jdbcType="NUMERIC"/>
 </resultMap>
 <sql id="columns">id,name,address,age</sql>
 <sql id="dysql">
  <where>
   <if test="@Ognl@isNotEmpty(name)"> and name like '%${name}%'</if>
   <if test="@Ognl@isNotEmpty(address)"> and address like '%${address}%'</if>
   <if test="@Ognl@isNotEmpty(age)"> and age > ${age}</if>
  </where>
 </sql>
 <insert id="insertuser" parameterType="com.batis.data.MyUser">
  insert into myuser (<include refid="columns"/>) values (#{id},#{name},#{address},#{age})
 </insert>
 <delete id="deleteuser" parameterType="java.lang.Long" >
  delete from myuser where id=#{id}
 </delete>
 <update id="updateuser" parameterType="com.batis.data.MyUser">
  update myuser set name=#{name},address=#{address},age=#{age} where id=#{id}
 </update>
 <select resultType="com.batis.data.MyUser" id="getalluser" >
  select <include refid="columns"/> from myuser
 </select>
 <select id="getuserbydy" resultMap="myuser" parameterType="com.batis.data.MyUser">
  select <include refid="columns"/> from myuser
   <include refid="dysql"/>
  <if test="@Ognl@isEmpty(name)">
   order by #{name} desc
  </if>
 </select>
</mapper>

8. service

package com.batis.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import com.batis.dao.BatisDao;
import com.batis.data.MyUser;

@Repository("service")
public class BatisService {
 @Resource(name="dao")
 private BatisDao dao;

 public BatisDao getDao() {
  return dao;
 }

 public void setDao(BatisDao dao) {
  this.dao = dao;
 }
 public List getAll(){
  return dao.getAll();
 }
 public void save(MyUser user){
  dao.save(user);
 }
 public List getbydy(MyUser user){
  List list=dao.getByDy(user);
  return list;
 }
}
9. view

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
oh yes
</body>
</html>

10. WEB-INF里的页面 request/result.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 this is result jsp
</body>
</html>

测试过 可以用~ 注意吧Ognl.java放到src下 否则会报错

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值