ssh注解开发

引入需要的jar包

@Entity
public class Teacher {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
  private   Integer  tId;  //编号
  private   Integer  tAge; //年龄
  private   String  tName;//姓名
  private   Date  tDate;

@Override
public String toString() {
    return "Teacher [tId=" + tId + ", tage=" + tAge + ", tName=" + tName
            + ", tDate=" + tDate + "]";
}
public Teacher() {
    super();
}
public Teacher(Integer tId, Integer tage, String tName, Date tDate) {
    super();
    this.tId = tId;
    this.tAge = tage;
    this.tName = tName;
    this.tDate = tDate;
}
public Integer gettId() {
    return tId;
}
public void settId(Integer tId) {
    this.tId = tId;
}

public Integer gettAge() {
    return tAge;
}
public void settAge(Integer tAge) {
    this.tAge = tAge;
}
public String gettName() {
    return tName;
}
public void settName(String tName) {
    this.tName = tName;
}
public Date gettDate() {
    return tDate;
}
public void settDate(Date tDate) {
    this.tDate = tDate;
}

}

Teacher实体类

public interface TeacherDao {
    //新增
    void  addTeacher(Teacher teacher);

    //删除
    void  deleteTeacher(Teacher teacher);
    //修改
    void  updateTeacher(Teacher teacher);
    //查询
    List<Teacher>  findTeachers();
    //根据ID查询指定的teacher
    Teacher findById(Integer id);

}

TeacherDao

@Repository("teacherDao")
public class TeacherDaoImpl implements TeacherDao {
    @Autowired   // byType
    private SessionFactory sessionFactory;

    // 新增
    public void addTeacher(Teacher teacher) {
        sessionFactory.getCurrentSession().save(teacher);
    }

    // 删除
    public  void deleteTeacher(Teacher teacher){
        sessionFactory.getCurrentSession().delete(teacher);
    }

    // 修改
    public void updateTeacher(Teacher teacher){
        sessionFactory.getCurrentSession().update(teacher);
    }

    // 查询
    public List<Teacher> findTeachers(){
        return sessionFactory.getCurrentSession().createQuery("from  Teacher").list();
    }

    public Teacher findById(Integer id) {
        //OpenSessionInView
        //return (Teacher)sessionFactory.getCurrentSession().get(Teacher.class, id);
        return (Teacher) sessionFactory.getCurrentSession().load(Teacher.class, id);
    }

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

}

TeacherDaoImpl

public interface TeacherService {

    // 新增
    void addTeacher(Teacher teacher);

    // 删除
    void deleteTeacher(Teacher teacher);

    // 修改
    void updateTeacher(Teacher teacher);

    // 查询
    List<Teacher> findTeachers();

       //根据ID查询指定的teacher
        Teacher findById(Integer id);
}

TeacherService

@Service("teacherService")
public class TeacherServiceImpl implements TeacherService {

    @Resource(name="teacherDao")   //byName
    private TeacherDao dao;

    //新增
    @Transactional
    public void addTeacher(Teacher teacher) {
       dao.addTeacher(teacher);
    }
    //删除
    @Transactional
    public void deleteTeacher(Teacher teacher) {
        dao.deleteTeacher(teacher);
    }
    //修改
    @Transactional
    public void updateTeacher(Teacher teacher) {
        dao.updateTeacher(teacher);
    }

    //查询所有
    @Transactional(readOnly=true)
    public List<Teacher> findTeachers() {
       return    dao.findTeachers();
    }

    //查询指定的教师
    @Transactional(readOnly=true)
    public Teacher findById(Integer id) {
        return dao.findById(id);
    }

    public TeacherDao getDao() {
        return dao;
    }
    public void setDao(TeacherDao dao) {
        this.dao = dao;
    }

}

TeacherServiceImpl

@Namespace("/")
@ParentPackage("struts-default")
@Component
public class AddAction extends ActionSupport {
    private  String  name;
    private  Integer  age;
    private  Integer  id;
    @Autowired
    @Qualifier("teacherService")   //@Resource(name="teacherService")
    private TeacherService  service;

     public  String add(){
         System.out.println("进入ladd");
         Teacher teacher=new Teacher();
         teacher.settAge(age);
         teacher.settName(name);
         service.addTeacher(teacher);
         return  SUCCESS;
     }

     @Action(value="AddServlet",results={@Result(location="/success.jsp")})
     public  String find(){
         Teacher teacher=service.findById(id);
         System.out.println(teacher);
         return  SUCCESS;
     }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public TeacherService getService() {
        return service;
    }

    public void setService(TeacherService service) {
        this.service = service;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }     

}

AddAction

<?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/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 配置数据源 dbcp数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driverClass}" />
        <property name="url" value="${jdbcUrl}" />
        <property name="username" value="${user}" />
        <property name="password" value="${password}"/>
    </bean>

    <!-- 使用配置文件 加载 数据库需要的4要素 经常使用 -->
    <context:property-placeholder location="classpath:jdbc.properties" />

    <!--配置sessionFactory -->
     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 读取hibernate配置文件<property name="configLocation" value="classpath:hibernate.cfg.xml"/> -->
         <!-- 配置数据源 -->
         <property name="dataSource" ref="dataSource"></property>
         <!-- 扫描  包下面的  类 -->
         <property name="packagesToScan" value="cn.bdqn.bean"/>
         <property name="hibernateProperties">
          <props>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <!-- 当前的事务线程内  使用session   -->
            <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate5.SpringSessionContext</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
          </props>
         </property>
     </bean>

 <!-- 开启扫描包 -->
 <context:component-scan base-package="cn.bdqn.*"/>

<!--  配置事务管理器  -->
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
  </bean>
  <!--事务的注解  -->
  <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

applicationContext.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">
  <display-name></display-name>

  <!-- 配置全局监听器 确保 容器 对象 只被实例化一次! -->
   <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
  <!--  默认xml名称 必须是 applicationContext.xml 必须在 WEB-INF的根目录下
     现在我们 设置applicationContext.xml文件的路径     我们也可以更改 xml文件的名称 -->
   <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

   <!-- 设置openSessionInView  必须在struts2的核心控制器 之前  不然会起作用 -->
   <filter>
   <filter-name>open</filter-name>
    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
  </filter>

   <filter-mapping>
     <filter-name>open</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping> 

  <!--配置struts2的核心控制器  -->
     <filter>
   <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

   <filter-mapping>
     <filter-name>struts2</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping> 

  <servlet>
    <servlet-name>AddServlet1</servlet-name>
    <servlet-class>cn.bdqn.servlet.AddServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AddServlet</servlet-name>
    <url-pattern>/AddServlet</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

web.xml文件

jdbc.properties文件自己定义即可

时间: 2024-10-13 16:12:47

ssh注解开发的相关文章

SSH整合开发时Scope为默认时现象与原理

1.前提知识 1)scope默认值 进行SSH整合开发时,Struts2的action需要用spring容器进行管理,只要涉及到类以bean的形式入到spring容器中,不管是xml配置还是使用注解方式进行配置,都会涉及到spring管理bean的scope,其一共有五种取值,而其默认值为singleton,也就是单例模型,所有对此bean引用为同一个对象. 2)action应为多例 struts2作为MVC中视图(View)层框架,其最主要任务就是接收用户请求,然后调用业务逻辑层进行处理,这种

Spring--SSH--全注解开发

SSH全注解开发: (1) 在Action类中添加注解,实现Struts2的注解开发(@NameSpace.@ParentPackage.@Action...) 1 package com.tongji.actions; 2 3 import org.apache.struts2.convention.annotation.Action; 4 import org.apache.struts2.convention.annotation.Namespace; 5 import org.apach

SpringMVC的注解开发入门

1.Spring MVC框架简介 支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换.格式化.验证框架无缝集成 对静态资源处理提供特殊支持 更加灵活的控制器方法签名,可完全独立于Servlet API 2.Spring MVC框架结构,执行流程 3.如何在应用中使用Spring-MVC? 在应用中添加Spring框架支持: 在web.xml中配置Spring-MVC的请求转发器(前端控制器) 编写Spring

使用Java注解开发自动生成SQL

使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量.而使用注解开发,可以减少配置文件的使用,方便代码的维护,同时,在开发速度上也有大幅提升,因此,学会使用注解开发,是有必要掌握的一项技能. 下面为各位展示下使用注解开发自动生成SQL语句的过程. 首先先定义一个实体类,用于和数据库字段进行映射,为了方便,数据库字段名称和实体类变量名称保持一致. pac

Annotation(一)——注解开发介绍

在编程中,一直强调的一点就是注释的编写,注释的规范等等.尤其是越是核心,程序越复杂,逻辑越多的清空下,注释的编写对我们以后的阅读代码,维护软件起着至关重要的作用.一款软件有着好的注释,相当于一个中国人阅读一篇带着汉语翻译的英文文章,其阅读速度是事半功倍的效果.但是今天想要总结的却不是代码中的注释需要注意的问题,而是JDK5.0以后提供的一种新特性. 一, Annotation(注解),其实就是对类,方法,属性进行的一种标示,一种注释(注意,这个里注释不是为了让我们开发或维护人员阅读更方便,而是为

Annotation(三)——Spring注解开发

Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action,service,dao等层的声明,然后并告知框架我们想要的注入方式,然后在类中声明要组合类的get,set方法.而通过Spring框架中注解的运用也就主要是解决这类问题的.而框架中另一个核心知识AOP,一种面向横切面的方法编程,在程序中一般都是进行一次设置就可以的,所以都还放在配置文件中.例如声明式

Annotation(四)——Struts2注解开发

Hibernate和Spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: [html] view plaincopyprint? <span style="font-size:18px;">  <!-- 这是包名和命名空间的声明 --> <package name

Struts2框架之-注解开发

Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style="font-size:18px;">  <!-- 这是包名和命名空间的声明 --> <package name="orgPackage" namespace="/org" extends="struts-default"

springmvc注解开发

先在一个包中创建一个类,然后再配置sprringmvacontroller.xml并链接到该类. <context:component-scan base-package="cn.happy.controllerreturn"></context:component-scan> 注解开发所创建的类及其方法 通配符:是一种符号,不是精确匹配,而是用来代替 ** 代表任意级别目录,或者没有目录 package cn.happy.Controler; import o