Resumi três métodos no artigo anterior, mas há dois métodos que anotavam o SQL. Esse método é bastante confuso, então todo mundo não o usa muito. Vamos resumir os dois métodos comumente usados:
1. Classe de implementação dinâmica de proxy sem escrever DAO
Este método é relativamente simples. Você não precisa implementar a camada DAO, só precisa definir a interface. Aqui está apenas para gravar o arquivo de configuração, então o programa é muito simples:
1. Diagrama de estrutura geral:
2. Três arquivos de configuração e um arquivo de mapeamento
(1) A entrada do programa e a configuração do controlador front-end 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 http://java.sun.com/xmls/javaee/web-web-web-web-web--/java.sun.com/xmls/javaeeeee/web-web-web-web-web-web-web-web-web-web-web-web-web-web-web-/java.sun.com/ <lame-name> website1 </semplay-name> <!-Configure a escuta e monte automaticamente as informações de configuração do ApplicationContext quando o contêiner da web iniciar-> <Ilvier> <Ivier-class> org.springframework.web.context.contextloaderListener </ouvinte-class> </outer> <!-Definir Spring Spring Spring Spring <amam-name> contextConfigLocation </param-name> <amam-value> ClassPath: config/springmvc-ervlet.xml, classPath: config/appoldcontext.xml </param-value> </context-pam> <!-Caractere codificação-> <filtro> <filtroe> ecodingfilter </filterl-Filter-Filter <! <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> <init-param> <param-name>forceEncoding</param-name> <amam-value> true </param-value> </irit-param> </ftrids> <filter-mapping> <filter-name> EncodingFilter </filter-Name> <url-tattern>*. do </url-tattern> </filter-mapping> <!-Front-End Controller-> <Vertlet> <VertLame> Springmv. <Vertlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <init-param> <amam-name> contextConfigLocation </param-name> <airm-value> Classpath: config/springmvc-servlet.xml </param-Voadue> </inot-spartpath: <Orging-on-startup> 1 </olload-on-startup> </servlet> <Servlet-Mapping> <Verlet-Mapping> <Verlet-Name> springmvc </servlet-name> <!-intercept solicitação-> <bll-file-tattern>*. do </erl-Pattern> </servlet-mapping> <lmed-File-list> <lide-File> <lmed-File> index.htm </ld-welcome-file> <lmed-File> index.jsp </limk-File> <lmed-File> default.html </limk-file> <ldenm-file> default.htm </lorth-file> <lorde-file> default.jsp </welcome-file> </lmide-fil-list> </web-appi>
(2) Camada de controle de varredura, injeção automática e configuração do analisador de exibição springmvc-servlet.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 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: util = "http://www.springframework.org/schema/util" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: jdbc = "http://www.springframework.org/schema/jdbc" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tpx-3.1.xsd http://www.springframework.org/schema http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "> <!-Annotação Driver-> <mvc: anotação-driven/> <!-<Contextation-ConfiG/> <!-context-scan <Contexto: Componente-Scan Base-Package = "com.website.Controller"> </Context: component-Scan> <!-View Parser-> <Bean id = "ViewResolver"> <Propriedade Nome = "Prefixo" Value = "/Web-Inf/">
(3) Fonte de dados, varredura automática e injeção de serviço, mybatissqlsessionFactory, proxy dinâmica da interface da camada DAO, e configuração de transação da camada ApplicationContext.xml
Haverá vários arquivos de configuração aqui
1) Fonte de dados única, o proxy dinâmico não define os valores das duas propriedades do SQLSessionFactoryBeanName ou SQLSessionTemplateBeanName ao implementar a interface da camada DAO.
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Load Configuration File. id = "DataSource"> <propriedade name = "driverClassName"> <Value> $ {jdbc.driverclassName} </value> </propriedade> <propriedades name = "url"> <value> $ {jdbc.url} </value> </propriedade> <names name = "username"> <valor> $ { name="password"> <value>${jdbc.password}</value> </property> </bean> <!-- Turn on the annotation configuration, namely Autowried --> <!-- <context:annotation-config/> --> <!-- In fact, component-scan has the function of annotation-config, that is, register the required classes in the spring container --> <context:component-scan base-package = "com.website.service" /> <!-Ao usar o mybatis, a primavera usa o sqlsessionFactoryBean para gerenciar o mybatis 'sqlSessionFactory-> <bean id = "sqlSessionFactory"> <nome da propriedade "DataSource" Refl = "DataSource" /> <! Value = ""/> <!-Classe do mapa do mapa da entidade Caminho, apenas um deles é escrito até o final, e vários podem ser substituídos por mybatis/*. xml-> <propriedade name = "mapperlocations" value = "classpath: mybatis/userMapper.xml"/> </bean> <!-<ierban "sqs" sqs "sqs" "" Bean = "SQLSessionFactory"/> </Siltuctor-arg> </bean>-> <!-A implementação dinâmica de proxy não precisa escrever dao-> <bean id = "mapperscannerconfigurer"> <!-aqui não é necessário que a interface da camada é especificada. value = "com.website.dao" /> <!-Se houver apenas uma fonte de dados, você não poderá especificá-lo, mas se houver várias fontes de dados, você deve especificá-lo-> <!-<Nome da propriedade = "SQLSessionFactoryBeanName" Value = "sqlSessionFactory" />-> <!-EMMIMENTO DO SQL DO SQL name = "sqlsessionTemplateBeanName" value = "sqlSession" />-> </i bean> <!-gerenciador de transações-> <bean id = "transactionManager"> <names name = "DataSource" ref = "anot: anot: anot: anot: anot: anot: anot: anot: anot" anot) </ Beans>2) Configurar o valor da propriedade do SQLSessionFactoryBeanName para uma única fonte de dados
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Load Configuration File. id = "DataSource"> <propriedade name = "driverClassName"> <Value> $ {jdbc.driverclassName} </value> </propriedade> <propriedades name = "url"> <value> $ {jdbc.url} </value> </propriedade> <names name = "username"> <valor> $ { name="password"> <value>${jdbc.password}</value> </property> </bean> <!-- Turn on the annotation configuration, namely Autowried --> <!-- <context:annotation-config/> --> <!-- In fact, component-scan has the function of annotation-config, that is, register the required classes in the spring container --> <context:component-scan base-package = "com.website.service" /> <!-Ao usar o mybatis, a primavera usa o sqlsessionFactoryBean para gerenciar o mybatis 'sqlSessionFactory-> <bean id = "sqlSessionFactory"> <nome da propriedade "DataSource" Refl = "DataSource" /> <! Value = ""/> <!-Classe do mapa do mapa da entidade Caminho, apenas um deles é escrito até o final, e vários podem ser substituídos por mybatis/*. xml-> <propriedade name = "mapperlocations" value = "classpath: mybatis/userMapper.xml"/> </bean> <!-<ierban "sqs" sqs "sqs" "" Bean = "SQLSessionFactory"/> </Siltuctor-arg> </bean>-> <!-A implementação dinâmica de proxy não precisa escrever dao-> <bean id = "mapperscannerconfigurer"> <!-aqui não é necessário que a interface da camada é especificada. value = "com.website.dao" /> <!-Se houver apenas uma fonte de dados, você não poderá especificá-lo, mas se houver várias fontes de dados, você deverá especificá-lo-> <nome da propriedade = "SQLSessionFactoryBeanName" value = "sqlSessionFactory" /> <!-Formulou diretamente o sqlStemMpled = "sqlSessption" /> <!-Formulado diretamente no sqlStemMpled = "sqlsessption" /> <!-Formulou diretamente o sqlStemTemMpled = "sqlsessption" /> <!-formulado! name = "sqlsessionTemplateBeanName" value = "sqlSession" />-> </i bean> <!-gerenciador de transações-> <bean id = "transactionManager"> <names name = "DataSource" ref = "anot: anot: anot: anot: anot: anot: anot: anot: anot" anot) </ Beans>3) Configurar o valor da propriedade SQLSessionTemplateBeanName para uma única fonte de dados
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Load Configuration File. id = "DataSource"> <propriedade name = "driverClassName"> <Value> $ {jdbc.driverclassName} </value> </propriedade> <propriedades name = "url"> <value> $ {jdbc.url} </value> </propriedade> <names name = "username"> <valor> $ { name="password"> <value>${jdbc.password}</value> </property> </bean> <!-- Turn on the annotation configuration, namely Autowried --> <!-- <context:annotation-config/> --> <!-- In fact, component-scan has the function of annotation-config, that is, register the required classes in the spring container --> <context:component-scan base-package = "com.website.service" /> <!-Ao usar o mybatis, a primavera usa o sqlsessionFactoryBean para gerenciar o mybatis 'sqlSessionFactory-> <bean id = "sqlSessionFactory"> <nome da propriedade "DataSource" Refl = "DataSource" /> <! Value = ""/> <!-Classe do mapa do mapa da entidade Caminho, apenas um deles é escrito até o final, e vários podem ser substituídos por mybatis/*. xml-> <propriedade name = "mapperlocations" value = "ClassPath: mybatis/userMapper.xml"/</bean> <Bean id = "SqSess Bean = "SQLSessionFactory"/> </fruittor-arg> </i bean> <!-A implementação dinâmica de proxy não requer a escrita doo-> <bean id = "mapperscannerConfigurer"> <!-Basepackage aqui a camada dao ", a própria interface", e a própria interface "! value = "com.website.dao" /> <!-Se houver apenas uma fonte de dados, você não poderá especificá-lo, mas se houver várias fontes de dados, você deve especificá-lo-> <!-<nome da propriedade = "SQLSessionFactoryBeanName" Value = "sqlSessionFactory" />-> <!-EMMENTULAÇÃO DO SQL " name = "sqlsessionTemplateBeanName" value = "sqlSession" /> </i bean> <!-gerenciador de transações-> <bean id = "transactionManager"> <propriedades name = "DataSource" ref = "DataSource" /> < /bEan> <!-usando a transação completa "<TX:4) Múltiplas fontes de dados
Observe que, se for uma fonte de vários dados, você deve usar o nome SQLSessionFactoryBeanName ou SQLSessionTemplateBeanName para especificar a fonte de dados específica. Não sei se você notou na configuração acima. Se você usar o SQLSessionTemplateBeanName, você deve
<bean id = "sqlSession"> <construtor-arg index = "0"> <ref bean = "sqlsessionFactory"/> </structor-arg> </i bean>
Para criar uma instância específica e atribuí -la à propriedade SQLSessionTemplateBeanName.
(4), mybatis sql mapeling arquivo userMapper.xml:
<? xml versão = "1.0" coding = "utf-8"?> <! DOCTYPE MAPPER PUBLICO "-// mybatis.org//dtd mapper 3.0 //" "httpp://mybatis.org/dtd/mybatis-3-mapper.dtd"> <! Para esta demonstração, o namespace é o caminho completo do userdao.java-> <mapeper namespace = "com.website.dao.userdao"> <!-O id aqui está o nome do método na interface-> <insert id = "saveUser" uvesttype = "java.utiler.map"> valores (#{id},#{name}) </insert> </mapper>Ok, vamos ao arquivo de configuração e fazê -lo. Vamos dar uma olhada na camada de controle, na camada de lógica de negócios e no código da camada DAO.
3. Camada do controlador
pacote com.website.Controller; importar java.util.hashmap; importar java.util.map; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.controller; importar org.springframework.web.bind.annotation.requestmapping; importar org.springframework.web.bind.annotation.requestmethod; importação com.website.service.userService; @Controller @ReQuestMapping (value = "/user") classe pública UserController {// Injetar UserService Object @AUTOWIRED UserService Private Service Service; @RequestMapping (Value = "/Save.do", Method = requestMethod.get) public String saveUser (solicitação httpServletRequest, httpServletResponse resposta) {string id = request.getParameter ("id"); Nome da string = request.getParameter ("nome"); Mapa <string, string> map = new hashmap <string, string> (); map.put ("id", id); map.put ("nome", nome); UserService.SaveUser (MAP); retornar "índice"; }}4. Camada de serviço
pacote com.website.service; importar java.util.map; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.service; importar org.springframework.transaction.annotation.transaction; importação com.website.dao.userdao; @Service ("UserService") @Transaction Public Class UserService {// Injeção DAO Interface Classe de implementação Instância // Ambos os métodos de injeção podem ser @Autowired Private UserDao Userdao; public void saveUser (map <string, string> map) {int end = userdao.saveUser (map); System.out.println ("end:" + end); }}5. Interface da camada dao
pacote com.website.dao; importar java.util.map; //com.website.dao.userdao interface pública userdao {int saveUser (map <string, string> map); } O caminho completo da interface Dao é o espaço para nome do arquivo de mapeamento correspondente a esta interface Dao, e o nome do método é o valor do id
OK, esse método de configuração acabou e também há uma pequena demonstração completa. Vamos resumir brevemente abaixo:
Comparado com o método de configuração anterior (que será escrito abaixo) é que ele usa o método dinâmico de proxy da interface da camada DAO. Antes, implementaremos manualmente a camada DAO na camada DAO e, em seguida, injetaremos automaticamente a instância do SQLSessionTemplate para chamar métodos específicos como Insert ("", "") SelectOne ("", "") e outros métodos. O primeiro parâmetro é o endereço do arquivo de mapeamento: espaço para nome+ID, e o segundo parâmetro são as condições passadas. Dessa forma, o Mybatis encontrará o arquivo de mapeamento específico de acordo com os dois parâmetros que passamos para analisar e consultar. O uso de proxy dinâmico aqui elimina a etapa de implementação da interface Dao, mas a implementamos na primavera. Há um problema. Passamos pelos parâmetros da condição de consulta, mas o caminho específico do arquivo de mapeamento é: Namespce+ID. O que devo fazer se não for passado? Ou seja, o espaço para nome do seu arquivo de mapeamento deve ser o nome completo da classe de interface e o ID deve ser o nome do método na interface, para que o proxy dinâmico possa encontrar o caminho e também ter parâmetros. Você acha que é o mesmo? Hahaha!
2. Implementar manualmente a interface da camada DAO
Vamos primeiro dar uma olhada na configuração e código para implementar manualmente a camada DAO:
1. Diagrama de estrutura do tópico
2. Três arquivos de configuração e arquivos de mapeamento
(1) Entrada do programa, Configuração do controlador front-end 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 http://java.sun.com/xmls/javaee/web-web-web-web-web--/java.sun.com/xmls/javaeeeee/web-web-web-web-web-web-web-web-web-web-web-web-web-web-web-/java.sun.com/ <libe-name> website2 </semplay-name> <!-Carregar Configuração do contêiner Spring-> <Ilvier> <Ilvier-class> org.springframework.web.context.ContextLoaderListener </Lister-Class> </ouvinte> <!-Definir o arquivo de configuração do contêiner de primavera </contextom> <matmatm> <matmats> </listerm> <amam-value> ClassPath: config/springmvc-ervlet.xml, classPath: config/appolpiContext.xml </param-value> </context-param> <!-Codelar filtro-> <filter> <filter-name> codingFilter </filtro-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> <init-param> <param-name>forceEncoding</param-name> <amam-value> true </param-value> </irit-param> </ftrids> <filter-mapping> <filter-name> EncodingFilter </filter-Name> <url-tattern>*. do </url-tattern> </filter-mapping> <!-Front-End Controller-> <Vertlet> <VertLame> Springmv. <Vertlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <init-param> <amam-name> contextConfigLocation </param-name> <airm-value> Classpath: config/springmvc-servlet.xml </param-Voadue> </inot-spartpath: <lound-on-startup> 1 </load-on-startup> </servlet> <Servlet-Mapping> <Verlet-name> springmvc </servlet-name> <!-intercept request-> <url-tattern>*. do </url-tattern> </ervlet-mapping> <lorde-FILE> <lorde-file> index.html> <lmed-File> index.jsp </lding-File> <lmed-File> default.html </cleard-file> <ldengry-file> default.htm </lding -file> <lmed-File> default.jsp </cleard-file> </weld-File-list> </bile-app>
(2) Camada de controle de varredura, injeção automática e configuração do analisador de exibição springmvc-servlet.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 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: util = "http://www.springframework.org/schema/util" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: jdbc = "http://www.springframework.org/schema/jdbc" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tpx-3.1.xsd http://www.springframework.org/schema http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "> <!-Anotação Driver-> <MVC: Annotation-Driven/> <!-<! Base-Package = "com.website.controller"> </context: component-scan> <!-View Parser-> <Bean id = "ViewResolver"> <Nome da propriedade "prefixo" value = "/web-inf/view/"> </propriedade> <names = "sufixo"/".
(3) Fonte de dados, varredura automática e injeção de serviço, mybatissqlsessionfactory e configuração de transação da primavera ApplicationContext.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-Load Configuration File. id = "DataSource"> <propriedade name = "driverClassName"> <Value> $ {jdbc.driverclassName} </value> </propriedade> <propriedades name = "url"> <value> $ {jdbc.url} </value> </propriedade> <names name = "username"> <valor> $ { name = "senha"> <Value> $ {jdbc.password} </value> </propriedade> </bean> <!-Ligue a configuração da anotação, como o injeto de forma automática-que é injetar o recipiente do componente, o que é o spring/<!-<! Para escanear o feijão antes que ele possa ser usado-> <Contexto: componente-Scan Base-Package = "com.website.service, com.website.dao" /> <!-Ao usar o mybatis, o SMPLATESSIONSESSIONFACTORYBEAN para gerenciar o Mybatis 'SQLSessionFactory-<! Ele fornece alguns métodos-> <bean id = "sqlSessionFactory"> <propriedade name = "DataSource" ref = "DataSource" /> <!-MyBatis Configuration File Path-> <Nome da propriedade "é" ConfigLocation "Value =" " /> <!-Arquivo da classe de entidade Path, deve haver vários arquivos de mapa em desenvolvimento, mybtl, mybatl =" " /> <!-Arquivo do mapa de entidade. value = "Classpath: mybatis/userMapping.xml"/> </i bean> <!-Na verdade, o exemplo desta classe é o sqlSession em mybatis-> <bean id = "sqlsession> <construtor-arg index =" 0 "> <ref Bean =" SQLSessionFactory "/> </construtor <Propriedade name = "DataSource" ref = "DataSource" /> < /bean> <!-Use transação de anotação completa-> <tx: transação orientada por anotação(4) arquivo de mapeamento mybatis
<? xml versão = "1.0" coding = "utf-8"?> <! Depois de escrevermos o caminho completo na camada Dao Mybatis, é o mapeamento das instruções SQL relevantes neste arquivo-> <Mapper Namespace = "com.website.userMapper"> <!-parameterType é o tipo de parâmetro que você aceita,-> <! Usuário (id, nome, senha) valores (#{id},#{name},#{senha}) </insert> </mapper>Você pode ver que o espaço para nome +ID do arquivo de mapeamento aqui é personalizado em vez do nome completo da classe +ID da interface da camada DAO.
3. Controlador
pacote com.website.Controller; importar java.util.hashmap; importar java.util.map; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.controller; importar org.springframework.web.bind.annotation.requestmapping; importação com.website.service.userService; /*** @Author Whd Data 5 de junho de 2016*/@Controller @ReQuestMapping (Value = "/User") classe pública UserController {@AUTOWIRED PRIVADO Uservice UserService; @RequestMapping (value = "/Save.do") public String saveUser (solicitação httpServletRequest, httpServletResponse resposta) {string id = request.getParameter ("id"); Nome da string = request.getParameter ("nome"); String senha = request.getParameter ("senha"); Mapa <string, string> map = new hashmap <string, string> (); map.put ("id", id); map.put ("nome", nome); map.put ("senha", senha); UserService.SaveUser (MAP); retornar "índice"; }}4. Serviço de camada lógica de negócios
pacote com.website.service; importar java.util.map; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.service; importar org.springframework.transaction.annotation.transaction; importação com.website.dao.userdao; / *** @Author Whd Data 5 de junho de 2016*/ @Service ("UserService") @Transaction Public Class UserService {@AUTOWIRED PRIVADO UserDAO Userdao; public void saveUser (map <string, string> map) {userdao.saveUser (map); }}5. camada dao
pacote com.website.dao; importar java.util.map; importar org.mybatis.spring.sqlsessionTemplate; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.repository; / *** @author whd dados 5 de junho de 2016*/ @repository ("userdao") classe pública userdao {@aUTowired private sqlSessionTemplate sqlSession; public void saveUser (map <string, string> map) {int end = sqlsession.insert ("com.website.userMapper.insertuser", mapa); System.out.println ("end" + end); }}Observamos o SQLSessionTemplate da camada DAO invertida. Este é realmente o objeto SQLSession em Mybatis. Vemos que ele está configurado no ApplicationContext.xml; portanto, quando o usarmos, a Spring o injetará automaticamente. Podemos usá -lo diretamente sem criá -lo. Esta é a chamada inversão de controle. Ok, os métodos de configuração desses dois arquivos acabaram.
Resumir
O exposto acima é uma explicação detalhada dos métodos de configuração de mola e mybatis introduzidos a você (dois métodos comumente usados). Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!