Comment utiliser Mybatis pour intégrer le partage de méthodes Spring
Cet article présente principalement l'exemple de code de Mybatis intégrant Spring. Les amis qui en ont besoin peuvent se référer à
Autres outils ou technologies nécessaires :
Outils de gestion de projet : Maven
Affichage WEB Front-end : JSP
Autres frameworks : Spring, Spring MVC
Base de données : Derby
Créer un nouveau projet Web Maven
Dépendances Maven :
<!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.10</version> </dependency> <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.6.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> <scope>runtime</scope> </dependency> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.7</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.1</version> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <!-- Derby --> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <version>10.10.2.0</version> </dependency> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derbyclient</artifactId> <version>10.10.2.0</version> </dependency>
Création de tables SQL et insertion de données
CREATE TABLE USER_TEST_TB( ID INT PRIMARY KEY, USERNAME VARCHAR(20) NOT NULL, PASSWORD VARCHAR(20) NOT NULL, NICKNAME VARCHAR(20) NOT NULL ); INSERT INTO USER_TEST_TB VALUES(1,'1st','111','Jack'); INSERT INTO USER_TEST_TB VALUES(2,'2nd','222','Rose'); INSERT INTO USER_TEST_TB VALUES(3,'3rd','333','Will');
web.xml (sous scr/main/webapp/WEB-INF)
<?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"> <!-- Spring 的配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/*Context.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
appServlet-servlet.xml (fichier de configuration du servlet de Spring scr/ main/webapp/WEB-INF)
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 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"> <!-- 开启Annotation支持 --> <annotation-driven /> <!-- Spring的渲染层配置 --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean> <!-- Spring的Annotation默认扫描包 --> <context:component-scan base-package="com.bjpowernode.practice" /> <!-- 引入其他Spring配置文件 --> <beans:import resource="classpath:applicationContext.xml" /> </beans:beans>
Fichier JSP
show.jsp(src/main/webapp/WEB-INF/views目录下) <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!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>Show All Users</title> <style type="text/css"> *{ margin: 0px; padding: 0px; } </style> </head> <body> <table border="1px" bordercolor="green"> <thead> <tr> <th>USER_NAME</th> <th>PASSWORD</th> <th>NICK_NAME</th> <th>EDIT</th> <th>DELETE</th> </tr> <c:forEach items="${users}" var="user" varStatus="status"> <tr> <td>${user.username}</td> <td>${user.password}</td> <td>${user.nickname}</td> <td><a href="update/${user.id}" rel="external nofollow" >edit</a></td> <td><a href="delete/${user.id}" rel="external nofollow" >delete</a></td> </tr> </c:forEach> </thead> </table> <a href="insert" rel="external nofollow" >Add new User</a> </body> </html>
update.jsp( Répertoire src/main/webapp/WEB-INF/views)
<%@ 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>Update Profile</title> </head> <body> <form action="${user.id}" method="post"> User ID:${user.id}<br> Username:<input type="text" name="username" value="${user.username}"/><br> Password:<input type="text" name="password" value="${user.password}"/><br> Nickname:<input type="text" name="nickname" value="${user.nickname}"/><br> <input type="submit" value="submit"> </form> </body> </html>
insert.jsp(répertoire src/main/webapp/WEB-INF/views)
<%@ 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 Profile</title> </head> <body> <form action="" method="post"> User Id:<input type="text" name="id"><br> Username:<input type="text" name="username" /><br> Password:<input type="text" name="password"/><br> Nickname:<input type="text" name="nickname"/><br> <input type="submit" value="submit"> </form> </body> </html>
applicationContext.xml (le fichier de configuration de l'application Spring se trouve dans le répertoire src/main/resources)
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd"> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.bjpowernode.practice" /> <property name="sqlSessionFactoryBeanName" value="derbySqlSessionFactory" /> </bean> <!-- 配置Derby驱动数据源 --> <bean id="derbyDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" /> <property name="url" value="jdbc:derby://localhost:1527/freud;create=true" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" name="derbySqlSessionFactory"> <property name="dataSource" ref="derbyDataSource" /> <property name="mapperLocations" value="classpath*:com/freud/practice/*Mapper.xml" /> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="derbyDataSource" /> </bean> <!-- 开启基于注解的事务 --> <tx:annotation-driven /> </beans>
Fichier Java
UserController.Java (dans le répertoire src/main/java/com.bjpowernode.practice.controller)
package com.bjpowernode.practice.controller; import com.bjpowernode.practice.User; import com.bjpowernode.practice.UserMapper; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @EnableWebMvc @Controller public class UserController { @Autowired private UserMapper userMapper; /** * * 获得所有的User信息 * * @param model * @return */ @RequestMapping(value = {"/", ""}, method = RequestMethod.GET) public String getAllUser(Model model) { List<User> users = userMapper.getUsers(); System.out.println("Show all user size:" + users.size()); model.addAttribute("users", users); return "show"; } /** * * INSERT的GET请求,跳转到Insert的View即insert.jsp * * @return */ @RequestMapping(value = {"/insert", ""}, method = RequestMethod.GET) public String insertUser() { return "insert"; } /** * * INSERT的POST请求,执行插入操作并返回ShowAll页面 * * @param user * @return */ @RequestMapping(value = {"/insert", ""}, method = RequestMethod.POST) public String insertUserPOST(User user) { userMapper.insertUser(user); return "redirect:/"; } /** * * UPDATE的GET请求,跳转到update的View即update.jsp * * @param id * @param model * @return */ @RequestMapping(value = {"/update/{id}", ""}, method = RequestMethod.GET) public String updateUser(@PathVariable String id, Model model) { model.addAttribute("user", userMapper.getUser(Integer.valueOf(id))); return "update"; } /** * * UPDATE的POST请求,执行更新操作并返回ShowAll页面 * * @param id * @param user * @return */ @RequestMapping(value = {"/update/{id}", ""}, method = RequestMethod.POST) public String updateUserPOST(@PathVariable String id, User user) { userMapper.updateUser(user); return "redirect:/"; } /** * * 通过Id删除USER * * @param id * @return */ @RequestMapping(value = {"/delete/{id}", ""}, method = RequestMethod.GET) public String deleteUser(@PathVariable int id) { userMapper.deleteUser(id); return "redirect:/"; } }
Utilisateur .java (dans src/main/java/com.bjpowernode.practice)
package com.bjpowernode.practice; /** * * User 对象。 * * @author Freud Kang * */ public class User { private Integer id; private String username; private String password; private String nickname; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } }
UserMapper.java (dans src/main/java /com.bjpowernode.practice répertoire)
package com.bjpowernode.practice; import java.util.List; public interface UserMapper { /** * * 获得所有User * * @return */ public List<User> getUsers(); /** * * 通过Id获得User * * @param id * @return */ public User getUser(int id); /** * * 插入User * * @param user */ public void insertUser(User user); /** * * 更新User * * @param user */ public void updateUser(User user); /** * * 通过Id删除User * * @param userId */ public void deleteUser(int userId); }
UserMapper.xml (fichier de configuration du mappeur mybatis, dans le répertoire src/main/java/com.bjpowernode.practice en bas)
<?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.bjpowernode.practice.UserMapper"> <!-- 查询 --> <select id="getUsers" resultType="com.bjpowernode.practice.User"> select * from USER_TEST_TB </select> <!-- 查询 --> <select id="getUser" resultType="com.bjpowernode.practice.User"> select * from USER_TEST_TB where ID=#{id} </select> <!-- 插入 --> <insert id="insertUser"> insert into USER_TEST_TB values(#{id},#{username},#{password},#{nickname}) </insert> <!-- 更改 --> <update id="updateUser"> update USER_TEST_TB set USERNAME = #{username}, PASSWORD = #{password}, NICKNAME = #{nickname} where ID = #{id} </update> <!-- 删除 --> <delete id="deleteUser"> delete from USER_TEST_TB where ID=#{id} </delete> </mapper>
Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

En tant que leader du secteur, Spring+AI fournit des solutions de pointe pour divers secteurs grâce à son API puissante et flexible et ses fonctions avancées. Dans cette rubrique, nous examinerons les exemples d'application de Spring+AI dans divers domaines. Chaque cas montrera comment Spring+AI répond à des besoins spécifiques, atteint ses objectifs et étend ces LEÇONS APPRISES à une gamme plus large d'applications. J'espère que ce sujet pourra vous inciter à comprendre et à utiliser plus profondément les possibilités infinies de Spring+AI. Le framework Spring a une histoire de plus de 20 ans dans le domaine du développement logiciel, et cela fait 10 ans que la version Spring Boot 1.0 est sortie. Maintenant, personne ne peut contester ce printemps

Interprétation des balises SQL dynamiques MyBatis : explication détaillée de l'utilisation des balises Set MyBatis est un excellent cadre de couche de persistance. Il fournit une multitude de balises SQL dynamiques et peut construire de manière flexible des instructions d'opération de base de données. Parmi elles, la balise Set est utilisée pour générer la clause SET dans l'instruction UPDATE, qui est très couramment utilisée dans les opérations de mise à jour. Cet article expliquera en détail l'utilisation de la balise Set dans MyBatis et démontrera ses fonctionnalités à travers des exemples de code spécifiques. Qu'est-ce que Set tag Set tag est utilisé dans MyBati

Explication détaillée du cache de premier niveau MyBatis : Comment améliorer l'efficacité de l'accès aux données ? Au cours du processus de développement, un accès efficace aux données a toujours été l’une des priorités des programmeurs. Pour les frameworks de couche de persistance comme MyBatis, la mise en cache est l'une des méthodes clés pour améliorer l'efficacité de l'accès aux données. MyBatis fournit deux mécanismes de mise en cache : le cache de premier niveau et le cache de deuxième niveau. Le cache de premier niveau est activé par défaut. Cet article présentera en détail le mécanisme du cache de premier niveau MyBatis et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre

Analyse du mécanisme de mise en cache MyBatis : la différence et l'application du cache de premier niveau et du cache de deuxième niveau Dans le framework MyBatis, la mise en cache est une fonctionnalité très importante qui peut améliorer efficacement les performances des opérations de base de données. Parmi eux, le cache de premier niveau et le cache de deuxième niveau sont deux mécanismes de mise en cache couramment utilisés dans MyBatis. Cet article analysera en détail les différences et les applications du cache de premier niveau et du cache de deuxième niveau, et fournira des exemples de code spécifiques pour illustrer. 1. Cache de niveau 1 Le cache de niveau 1 est également appelé cache local. Il est activé par défaut et ne peut pas être désactivé. Le cache de premier niveau est SqlSes

MyBatisGenerator est un outil de génération de code officiellement fourni par MyBatis, qui peut aider les développeurs à générer rapidement des JavaBeans, des interfaces Mapper et des fichiers de mappage XML conformes à la structure des tables de base de données. Dans le processus d'utilisation de MyBatisGenerator pour la génération de code, la définition des paramètres de configuration est cruciale. Cet article commencera du point de vue des paramètres de configuration et explorera en profondeur les fonctions de MyBatisGenerator.

Explication détaillée du mécanisme de mise en cache MyBatis : Lisez le principe du stockage en cache dans un article Introduction Lorsque vous utilisez MyBatis pour l'accès à la base de données, la mise en cache est un mécanisme très important, qui peut réduire efficacement l'accès à la base de données et améliorer les performances du système. Cet article présentera en détail le mécanisme de mise en cache de MyBatis, y compris la classification du cache, les principes de stockage et des exemples de code spécifiques. 1. Classification du cache Le cache MyBatis est principalement divisé en deux types : le cache de premier niveau et le cache de deuxième niveau. Le cache de premier niveau est un cache de niveau SQLSession.

Explication détaillée de la configuration des requêtes un-à-plusieurs de MyBatis : Pour résoudre les problèmes de requêtes associés courants, des exemples de code spécifiques sont nécessaires. Dans le travail de développement réel, nous rencontrons souvent des situations dans lesquelles nous devons interroger un objet d'entité maître et ses multiples objets d'entité esclave associés. . Dans MyBatis, la requête un-à-plusieurs est une requête d'association de base de données courante avec une configuration correcte, l'interrogation, l'affichage et le fonctionnement des objets associés peuvent être facilement réalisés. Cet article présentera la méthode de configuration des requêtes un-à-plusieurs dans MyBatis et comment résoudre certains problèmes de requêtes courants associés.

À mesure que la technologie réseau continue de se développer, les attaques de bases de données deviennent de plus en plus courantes. L'injection SQL est l'une des méthodes d'attaque courantes. Les attaquants saisissent des instructions SQL malveillantes dans la zone de saisie pour effectuer des opérations illégales, provoquant une fuite, une falsification ou même une suppression de données. Afin de prévenir les attaques par injection SQL, les développeurs doivent accorder une attention particulière lors de l'écriture du code, et lorsqu'ils utilisent un framework ORM tel que MyBatis, ils doivent suivre certaines bonnes pratiques pour garantir la sécurité du système. 1. Requête paramétrée La requête paramétrée est l'anti-
