Integração da primavera e Mybatis
Idéias de integração
A primavera precisa gerenciar o SQLSessionFactory através de um singleton.
Spring e Mybatis se integram para gerar objetos de proxy e usar o SQLSessionFactory para criar SQLSession. (A integração da primavera e Mybatis é concluída automaticamente)
Os mapeadores da camada de persistência precisam ser gerenciados na primavera.
Integrar o ambiente
Crie um novo projeto Java (próximo à estrutura de engenharia desenvolvida real)
pacote de jar:
MyBatis3.2.7 JAR PACOTO
Spring3.2.0 Pacote JAR
Mybatis e Spring Integration Package: Ibatis inicial e integração da primavera foram fornecidos pela primavera, e agora a integração Mybatis e Spring é fornecida pela Mybatis.
Todos os pacotes JAR (incluindo Springmvc)
Estrutura de engenharia
Etapa 1: integrar e configurar o SQLSessionFactory
Configurar SQLSessionFactory e Data Source em ApplicationContext.xml
O SQLSessionFactory está sob o pacote de integração de Mybatis e Spring.
<!-Carregando o arquivo de configuração-> <Contexto: Property-placeholder Location = "ClassPath: DB.Properties" /> <!-Fonte de dados, use dbcp-> <bean id = "dataSource" Destro-Method = "Close"> <nome da propriedade = "Driver" Name = "$ {JDBC.RIVIR}"> " value = "$ {jdbc.url}" /> <propriedade name = "userName" value = "$ {jdbc.username}" /> <propriedade name = "senha" value "$ {jdbc.password}" /> <nome da propriedade = "maxactive" = "10" /> <) sqlsessInFactory-> <bean id = "sqlSessionFactory"> <!-Carregue o arquivo de configuração mybatis-> <propriedade name = "configLocation" value = "mybatis /sqlmapconfig.xml" /> <!-fonte de dados-> <nome da propriedade /"datasource" ref = "" "Desenvolvimento original (após integração com a primavera)
sqlmap/user.xml
Carregar User.xml em sqlmapconfig.xml
DAO (IMPLEMENTO CLASSE HERIDAÇÃO SQLSessionDaosupport)
Anteriormente, a classe de implementação da interface DAO necessária para injetar SQLSessoinfactory e injetar -a até a primavera.
Aqui usamos a primavera para declarar o método de configuração e configurar o feijão de Dao:
Deixe o UserDAOIMPL IMPLEMENTO HERIT SQLSESSÃODAOSUPPORT
Configure Dao
Configure a interface DAO em ApplicationContext.xml
<!-interface dao original-> <bean id = "userdao"> <propriedade name = "sqlSessionFactory" ref = "sqlSessionFactory"/> </i bean>
Procedimentos de teste
fonte_folder/userdaooImpltest.javapublic classe userdaoimpltest {private ApplicationContext ApplicationContext; // Obtenha contêiner de mola no método de configuração @beforepublic void setup () lança: Spring/ApplicationContext = ClassPathXMLApplicationContext ("Classpath: spring/spring/spring/ApplicationContext = ClassPathXMLApplicationContext (" Classpath: spring/spring testFindUSerById () lança Exceção {Userdao UserDAO = (UserDAO) ApplicationContext.getBean ("Userdao"); // CHAMADA UUS USUER = Userdao.findUSERBYID (1); System.out.println (User);}}Desenvolvimento do agente do mapeador
UsermApper.xml e UserMapper.java
Basta copiar o projeto anterior e excluir o caminho da embalagem.
Crie objetos de proxy através do MapperFactoryBean
Como o UserMApper não é do tipo de interface, você precisa usar o MapperFactoryBean para gerar tipo de interface
Problema com este método:
Ele precisa ser configurado para cada mapeador, problemático.
Digitalização de maperes via MapperScannerConfigurer (recomendado)
* Depois de configurar o caminho de varredura do mapeador através da propriedade BasePackage, não há necessidade de configurar o caminho de varredura no sqlmapperConfig.xml.
A propriedade SQLSessionFactoryBeanName é usada aqui porque se a propriedade SQLSessionFactory estiver configurada, o arquivo de configuração do banco de dados e a configuração da fonte de dados não serão carregados primeiro (db.properties)
Código de teste
Engenharia reversa
MyBaits exige que os programadores escrevam as próprias declarações SQL. O funcionário do Mybatis fornece engenharia reversa para gerar automaticamente o código necessário para a execução mybatis (mapper.java, mapper.xml, po ..)
No desenvolvimento da empresa real, um método de engenharia reversa comumente usada: gerar código Java devido à tabela do banco de dados.
Faça o download da engenharia reversa
Como usar (pode usar) executar engenharia reversa
Recomenda -se usar o método do programa Java e não confia nas ferramentas de desenvolvimento.
Gere arquivos de configuração de código (4 lugares que precisam ser modificados)
Localização onde a classe PO é gerada: cn.itcast.ssm.po
O local onde o arquivo de mapeamento do mapeador é gerado: cn.itcast.ssm.mapper
A localização da interface do mapeador gerada: cn.itcast.ssm.mapper
Especifique tabela de banco de dados:
<tabela tableName = "itens"> </table> <tabela tableName = "ordens"> </ tabela> <tabela tablename = "orderDetail"> </itlast> <table tablename = "user"> </tabela> <? xml versão "1.0" coding = "utf-8"?> <! Configuração do gerador 1.0 // pt "" http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd "> <generatorConfiguration> <contexto id =" testTables "TargetMeTime =" Mybatis3 "> <Comentário> <! name = "suprimallcomments" value = "true"/> </commentGenerator> <!-Informações sobre conexões de banco de dados: classe de driver, endereço de conexão, nome de usuário, senha-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" Connectionl = "jdbc: mysql: // Localhost: 3n. userID = "root" senha = "mysql"> </jdbcconnection> <!- <jdbcconnection driverclass = "oracle.jdbc.oracledriver" ConnectionUrl = "jdbc: oracle: thin:@127.0.0.1: 1521: yycg" userID = "yyc" yycg "yycn:@127.0.0.1: 1521: yycg" userID = "yyc" yycg "yycg" "" -> <!-Os tipos falsos padrão, JDBC decimais e numéricos resolvem o número inteiro. Quando é verdade, os tipos decimais e numéricos JDBC resolvem para java.math.bigdecimal-> <navatyperesolver> <propriedade name = "forcebigDecimals" value = "false" /> < /javatyperesolver> <!-TargetProject: Localização da classe gerada-> <navamod TargetPackage = "cn.itcast.ssm.po" TargetProject = "./ src"> <!-Ativabpackages: se deve usar o esquema como o sufixo do pacote-> <nome da propriedade "enablesubPackages" value = "false" /> <! /> </javamodelGenerator> <!-TargetProject: Onde o arquivo de mapa do mapeador é gerado-> <sqlmapgenerator TargetPackage = "cn.itcast.ssm.mapper" TargetProject = "./ src"> <!-enablepackages: se o schemma ". /> </sqlmapGenerator> <!-TargetPackage: localização da geração de interface do mapeador-> <JavaclientGenerator type = "xmlmapper" TargetPackage = "cn.itcast.ssm.mapper" TargetProject = "./ src"> <!-Enablesbpackages: use schemma " value = "false"/> </javaclientGenerator> <!-Especifique tabela de banco de dados-> <tabela tablename = "itens"> </ table> <table tablename = "ordens"> </itlay> <tabela tablename = "orderDetail"> </tabela> <tablename = "user"> </tabela> </contention> </context> </generador "> </tabela> <tablename =" User "> </tabela> </contention>
Execute o gerador
Código gerado
Use código gerado
Você precisa copiar o código gerado no projeto gerado para o seu próprio projeto.
Métodos de teste em itens
// consulta de condição personalizada @testpublic void testSelectByExample () {itemSexample itemSexample = new ItemSexample (); // Consulta Condições de consulta através de critérios itemExample.criteria critério = itens = notexample.createcriteria (); critérios de e -sistring) itensMapper.SelectByExample (ItemSexample); System.out.println (list);} // Query @testpublic void com base no itens de chave de chave primária/itens/itens itens itens itens itens itens itens); = novo itens (); items.setName ("móvel"); items.setPrice (999F); itensMapper.Insert (itens);} // Atualize o data @testpublic void testUpDateByPrimaryKeyKey () {// Atualize todos os campos, você precisa de consciência primeiro e depois itens itens = itensMapper.SelectBy. Cop "); itensMapper.UpdateByPrimaryKey (itens); // Se o campo de entrada não estiver vazio, use esse método nas atualizações do lote. Não há necessidade de consultar primeiro e depois atualizar //itemsmapper.UpdateByPrimaryKeySelective(record);}O exposto acima é uma breve análise da integração e engenharia reversa da Spring e Mybatis, que 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!