ssm+jpa簡單案例

上期我們簡單寫個ssh後,今天我們用spring+springmvc+mybatis+jpa來寫個簡單的例子。

spring和springmvc可以說是無縫銜接的,這裏我們就不想ssh那樣兩兩整合,我們直接來。

首先還是新建一個maven工程test_ssm

導入我們想要的依賴

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.julyday</groupId>
	<artifactId>test_ssm</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>test_ssm Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<properties>
		<commons-lang.version>2.6</commons-lang.version>
		<slf4j.version>1.7.6</slf4j.version>
		<spring.version>4.1.3.RELEASE</spring.version>
		<jackson.version>2.5.4</jackson.version>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-framework-bom</artifactId>
				<version>${spring.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.4</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>5.0.1.Final</version>
		</dependency>
		
		<dependency>
		    <groupId>org.hibernate</groupId>
		    <artifactId>hibernate-entitymanager</artifactId>
		    <version>5.0.1.Final</version>
		</dependency>
		
		<dependency>
		    <groupId>org.springframework.data</groupId>
		    <artifactId>spring-data-jpa</artifactId>
		    <version>1.9.0.RELEASE</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
		</dependency>
					
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>${commons-lang.version}</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${slf4j.version}</version>
			<exclusions>
				<exclusion>
					<artifactId>slf4j-api</artifactId>
					<groupId>org.slf4j</groupId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>

		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>
		
		
		<dependency>  
	        <groupId>commons-collections</groupId>  
	        <artifactId>commons-collections</artifactId>  
	        <version>3.2</version>  
	    </dependency> 

		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>

		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.3</version>
		</dependency>

		<!-- xml格式輸出 -->
		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>1.4.7</version>
		</dependency>

		<!-- mybatis 包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>

		<!--mybatis spring 插件 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.0</version>
		</dependency>

		<!-- mysql連接 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.34</version>
		</dependency>
		
		<!-- 數據源 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.11</version>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.8</version>
		</dependency>

	</dependencies>
	<build>
		<finalName>test_ssm</finalName>
		
	</build>
</project>

接着是web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">  
	<display-name>test_ssm</display-name>

	<!-- spring配置文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring.xml</param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<!-- 編碼utf-8 -->
	<filter>
		<filter-name>encodingFilter</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>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- Spring MVC的核心  DispatcherServlet-->
  	<servlet>
  		<servlet-name>mvc-dispatcher</servlet-name>
  		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  		<init-param>
        	<param-name>contextConfigLocation</param-name>
        	<param-value>classpath:spring-mvc.xml</param-value>
  		</init-param>
  		<load-on-startup>1</load-on-startup>
  	</servlet>
  	<servlet-mapping>
  		<servlet-name>mvc-dispatcher</servlet-name>
  		<url-pattern>/</url-pattern>
  	</servlet-mapping>
  	
  	<!-- druid數據源sql監測 -->
  	<servlet>     
      <servlet-name>DruidStatView</servlet-name>   
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet> 
    <servlet-mapping>   
       <servlet-name>DruidStatView</servlet-name>
       <url-pattern>/druid/*</url-pattern>
     </servlet-mapping> 
  	
  	<!-- 項目默認頁 -->	
	<welcome-file-list>
		<welcome-file>/index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

spring配置文件spring.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:p="http://www.springframework.org/schema/p"  
	xsi:schemaLocation="http://www.springframework.org/schema/beans
			http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
			http://www.springframework.org/schema/context
			http://www.springframework.org/schema/context/spring-context-4.1.xsd">

	<!--自動掃描含有@Service將其注入爲bean -->
	<context:component-scan base-package="com.julyday.service.*" />
	<!-- 導入數據源 -->
    <import resource="spring-datasource.xml"/>
	 <!-- 導入mybatis配置 -->
    <import resource="spring-mybatis.xml"/>
    <!-- 導入jpa配置 -->
    <import resource="spring-jpa.xml"/>
</beans>

springmvc配置文件:

<?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-4.1.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.1.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
	
	<!-- 啓用Spring基於annotation的DI, 使用戶可以在Spring MVC中使用Spring的強大功能。 激活 @Required 
		@Autowired,JSR 250's @PostConstruct, @PreDestroy and @Resource 等標註 -->
	<context:annotation-config />
	
	<!-- DispatcherServlet上下文, 只管理@Controller類型的bean, 忽略其他型的bean, 如@Service -->
	<context:component-scan base-package="com.julyday">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
	</context:component-scan>
	<!-- <context:component-scan base-package="com.julyday.controller"/> -->
	
	<!-- 擴充了註解驅動,可以將請求參數綁定到控制器參數 -->
	<mvc:annotation-driven />
	
	<!-- 靜態資源處理,resources, css, js, imgs -->
	<!--<mvc:resources mapping="/resources/**" location="/resources/" />
	<mvc:resources mapping="/js/**" location="/js/" />
    <mvc:resources mapping="/images/**" location="/images/" />
    <mvc:resources mapping="/css/**" location="/css/" />	-->
    
    <!-- 容器默認的DefaultServletHandler處理 所有靜態內容與無RequestMapping處理的URL -->
  	<mvc:default-servlet-handler/>
  	
  	
  	<!-- 配置ViewResolver。 可以用多個ViewResolver。 使用order屬性排序。 InternalResourceViewResolver放在最後。 -->
	<bean
		class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
		<property name="order" value="1"/>
		<!-- 在沒有擴展名時即: "/user/1" 時的默認展現形式 -->
		<!-- 以json作爲默認返回,方便調用,省去後綴.json -->
		<!--  <property name="defaultContentType" value="application/json"></property>-->
		<!-- 擴展名至mimeType的映射,即 /user.json => application/json -->
		<property name="mediaTypes">
			<map>
				<!-- 告訴視圖解析器,返回的類型 /user/123.xml 將返回xml格式數據 
					/user/123.json 將返回json格式數據 
					/user/123.html 將返回html格式數據 
					favorParameter = false 
					/user/123?format=xml //將返回xml數據 
					/user/123?format=json //將返回json數據 -->
				<entry key="json" value="application/json" />
				<entry key="html" value="text/html" />
				<entry key="xml" value="application/xml" />
			</map>
		</property>
		<!-- 用於開啓 /userinfo/123?format=json 的支持 -->
		<property name="favorParameter" value="true" />
		<property name="defaultViews">
			<list>
				<!-- for application/json -->
				<bean
					class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
				</bean>
				<!-- for application/xml -->
				<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
					<property name="marshaller">
						<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
					</property>
				</bean>
			</list>
		</property>
		<property name="ignoreAcceptHeader" value="true" />
	</bean>
	
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
	
	<!--200*1024*1024即200M resolveLazily屬性啓用是爲了推遲文件解析,以便捕獲文件大小異常 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="209715200" />
		<property name="defaultEncoding" value="UTF-8" />
		<property name="resolveLazily" value="true" />
	</bean>
		
</beans>

orm我們用到了2個,所有配置文件我也把他們分開了

數據源的spring-datasource.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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:cache="http://www.springframework.org/schema/cache" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
       
     <!--引入配置屬性文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />
	 
	<!-- 配置數據源 使用的是Druid數據源 -->
	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
		init-method="init" destroy-method="close">
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />

		<!-- 初始化連接大小 -->
		<property name="initialSize" value="0" />
		<!-- 連接池最大使用連接數量 -->
		<property name="maxActive" value="20" />
		
		<!-- 連接池最小空閒 -->
		<property name="minIdle" value="0" />
		<!-- 獲取連接最大等待時間 -->
		<property name="maxWait" value="60000" />
		<property name="poolPreparedStatements" value="true" />
		<property name="maxPoolPreparedStatementPerConnectionSize"
			value="33" />
		<!-- 用來檢測有效sql -->
		<property name="validationQuery" value="${validationQuery}" />
		<property name="testOnBorrow" value="false" />
		<property name="testOnReturn" value="false" />
		<property name="testWhileIdle" value="true" />
		<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="60000" />
		<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="25200000" />
		<!-- 打開removeAbandoned功能 -->
		<property name="removeAbandoned" value="true" />
		<!-- 1800秒,也就是30分鐘 -->
		<property name="removeAbandonedTimeout" value="1800" />
		<!-- 關閉abanded連接時輸出錯誤日誌 -->
		<property name="logAbandoned" value="true" />
		<!-- 監控數據庫 -->
		<!--<property name="filters" value="mergeStat" />-->
		<property name="filters" value="stat" />  
    	<property name="connectionProperties" value="druid.stat.mergeSql=true" />  
	</bean>


</beans>


mybatis 配置文件:spring-mybatis.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:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd">

	<!-- myBatis文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 自動掃描entity目錄, 省掉Configuration.xml裏的手工配置 -->
		<property name="typeAliasesPackage" value="com.julyday.domain" />
		<!-- 顯式指定Mapper文件位置 -->
		<property name="mapperLocations" value="classpath*:/mapping/*.xml" />
	</bean>
	
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.julyday.dao" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
		<property name="annotationClass" value="com.julyday.annotation.JulydayRepository" />
	</bean>

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

	<!-- 攔截器方式配置事物 -->
	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="insert*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="select*" propagation="SUPPORTS" read-only="true" />

		</tx:attributes>
	</tx:advice>
	<!-- Spring aop事務管理 -->
	<aop:config>
		<aop:pointcut id="transactionPointcut"
			expression="execution(* com.julyday.service..*Impl.*(..))" />
		<aop:advisor pointcut-ref="transactionPointcut"
			advice-ref="transactionAdvice" />
	</aop:config>

</beans>

jpa配置文件:spring-jpa.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:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <!-- 指定數據源 -->
            <property name="dataSource" ref="dataSource" />
            <!-- 指定Entity實體類包路徑 -->
            <property name="packagesToScan">
                <list>
                    <value>com.julyday.entity</value>
                </list>
            </property>
            <!-- 指定JPA屬性;如Hibernate中指定是否顯示SQL的是否顯示、方言等 -->
            <property name="jpaVendorAdapter">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                    <!-- 是否生成ddl文件 -->
                    <property name="generateDdl" value="true" />
                    <!-- 是否展示sql -->
                    <property name="showSql" value="true" />
                    <!-- 必要的數據庫庫使用的詳細信息 -->
                    <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
                    <!-- mysql,自行選擇 -->
                    <property name="database" value="MYSQL"/>
                </bean>
            </property>
            <!--  <property name="jpaProperties">
                <props>
                    <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                </props>
            </property>-->
        </bean>

        <!-- Spring Data Jpa配置 -->

        <!-- 配置 啓用掃描並自動創建代理的功能  factory-class="com.monk.base.jpa.PeakJpaRepositoryFactory"自己定義的bean註解方式,可以不寫,直接註解所有包下的 -->
        <jpa:repositories base-package="com.julyday.dao" entity-manager-factory-ref="entityManagerFactory"  /> 

        <!-- Jpa 事務配置 -->
        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory"/>
        </bean>

        <!-- 開啓註解事務 -->
        <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
</beans>

數據庫配置文件:jdbc.properties

validationQuery=SELECT 1
jdbc.url=jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

相信小夥伴已經看到,在mybatis裏面我們寫了一個註解,告訴mybatis這個是要他來管理的

/**
 * 標識MyBatis的DAO,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的掃描。
 * 
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Component
public @interface JulydayRepository {
	String value() default "";
}


我們建了2個dao

@JulydayRepository
public interface UserDao {
	public void insert(User user);
	
	public User find(int id);
	
	public List<User> getList(User user);
	
	public void update(User user);
	
	public void delete(int id);
}


@Repository
public interface AdminDao extends JpaRepository<Admin,Integer>,JpaSpecificationExecutor<Admin>{
	Admin findById(int id);
	
	List<Admin> findByNameAndPassword(String name,String password);
	
	Page<Admin> findAll(Pageable pageable);
}

那麼第一個user我們是交給mybatis去管理的,第二個admin我們是交給jpa管理的。

接着我們看下簡單的controller

@RequestMapping("/user")
@Controller
public class UserController {
	
	@Autowired
	private UserService userService;
	
	@RequestMapping("/index")
	public String index(){
		return "index";
	}
	
	@RequestMapping("/find/{userId}")
	public String find1(@PathVariable("userId") Integer id,Model model){
		User user = userService.find(id);
		model.addAttribute("user", user);
		return "success";
	}
	
	@RequestMapping("/find")
	public String find2(User user,Model model){
		System.out.println(user.toString());
		List<User> list = userService.getList(user);
		model.addAttribute("user",list.get(0));
		return "success";
	}
	
	@RequestMapping("/findAll")
	@ResponseBody
	public String findAll(){
		List<User> list = userService.getList(new User());
		return JSONObject.toJSONString(list);
	}
	
	
}


admin的controller基本相同,其他的文件我們放在源碼下載的github上,我們部署測試下:


當然我們選擇了druid數據源我們也可以用他來做sql的監測


好的,最後我們把源碼文件放上做參考,源碼文件下載


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章