So verwenden Sie Mybatis zur Integration der Spring-Methodenfreigabe
In diesem Artikel wird hauptsächlich der Beispielcode für die Integration von Spring durch Mybatis vorgestellt. Freunde, die ihn benötigen, können sich auf
Andere benötigte Tools oder Technologien beziehen:
Projektmanagement-Tools: Maven
Front-End-WEB-Anzeige: JSP
Andere Frameworks: Spring, Spring MVC
Datenbank: Derby
Erstellen Sie eine neues Maven-Webprojekt
Maven-Abhängigkeiten:
<!-- 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>
SQL-Tabellenerstellung und Dateneinfügung
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 (unter 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 (Springs Servlet-Konfigurationsdatei 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>
JSP-Datei
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( src/main/webapp/WEB-INF/views-Verzeichnis)
<%@ 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(src/main/webapp/WEB-INF/views-Verzeichnis)
<%@ 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 (Die Anwendungskonfigurationsdatei von Spring befindet sich im Verzeichnis 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>
Java-Datei
UserController.Java (im Verzeichnis 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:/"; } }
Benutzer .java (in 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 (in src/main/java /com.bjpowernode.practice Verzeichnis)
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 (Mybatis-Mapper-Konfigurationsdatei, im Verzeichnis src/main/java/com.bjpowernode.practice unten)
<?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>
Zusammenfassung
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Mybatis zur Integration der Spring-Methodenfreigabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten

Interpretation der dynamischen SQL-Tags von MyBatis: Detaillierte Erläuterung der Verwendung von Set-Tags. MyBatis ist ein hervorragendes Persistenzschicht-Framework. Es bietet eine Fülle dynamischer SQL-Tags und kann Datenbankoperationsanweisungen flexibel erstellen. Unter anderem wird das Set-Tag zum Generieren der SET-Klausel in der UPDATE-Anweisung verwendet, die sehr häufig bei Aktualisierungsvorgängen verwendet wird. In diesem Artikel wird die Verwendung des Set-Tags in MyBatis ausführlich erläutert und seine Funktionalität anhand spezifischer Codebeispiele demonstriert. Was ist Set-Tag? Set-Tag wird in MyBati verwendet

Ausführliche Erklärung des First-Level-Cache von MyBatis: Wie kann die Effizienz des Datenzugriffs verbessert werden? Während des Entwicklungsprozesses war der effiziente Datenzugriff schon immer einer der Schwerpunkte der Programmierer. Für Persistenzschicht-Frameworks wie MyBatis ist Caching eine der Schlüsselmethoden zur Verbesserung der Datenzugriffseffizienz. MyBatis bietet zwei Caching-Mechanismen: Cache der ersten Ebene und Cache der zweiten Ebene. Der Cache der ersten Ebene ist standardmäßig aktiviert. In diesem Artikel wird der Mechanismus des First-Level-Cache von MyBatis ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis zu erleichtern

Analyse des MyBatis-Caching-Mechanismus: Der Unterschied und die Anwendung von First-Level-Cache und Second-Level-Cache Im MyBatis-Framework ist Caching eine sehr wichtige Funktion, die die Leistung von Datenbankoperationen effektiv verbessern kann. Unter diesen sind der First-Level-Cache und der Second-Level-Cache zwei häufig verwendete Caching-Mechanismen in MyBatis. In diesem Artikel werden die Unterschiede und Anwendungen von First-Level-Cache und Second-Level-Cache im Detail analysiert und spezifische Codebeispiele zur Veranschaulichung bereitgestellt. 1. Level-1-Cache Der Level-1-Cache wird auch als lokaler Cache bezeichnet. Er ist standardmäßig aktiviert und kann nicht deaktiviert werden. Der Cache der ersten Ebene ist SqlSes

MyBatisGenerator ist ein offiziell von MyBatis bereitgestelltes Codegenerierungstool, mit dem Entwickler schnell JavaBeans, Mapper-Schnittstellen und XML-Zuordnungsdateien generieren können, die der Datenbanktabellenstruktur entsprechen. Bei der Verwendung von MyBatisGenerator zur Codegenerierung ist die Einstellung der Konfigurationsparameter von entscheidender Bedeutung. Dieser Artikel beginnt aus der Perspektive der Konfigurationsparameter und untersucht eingehend die Funktionen von MyBatisGenerator.

Ausführliche Erklärung des MyBatis-Caching-Mechanismus: Lesen Sie das Prinzip der Cache-Speicherung in einem Artikel. Einführung Bei der Verwendung von MyBatis für den Datenbankzugriff ist Caching ein sehr wichtiger Mechanismus, der den Zugriff auf die Datenbank effektiv reduzieren und die Systemleistung verbessern kann. In diesem Artikel wird der Caching-Mechanismus von MyBatis ausführlich vorgestellt, einschließlich Cache-Klassifizierung, Speicherprinzipien und spezifischen Codebeispielen. 1. Cache-Klassifizierung Der MyBatis-Cache ist hauptsächlich in zwei Typen unterteilt: Cache der ersten Ebene und Cache der zweiten Ebene. Der Cache der ersten Ebene ist ein Cache der SqlSession-Ebene

Ausführliche Erläuterung der Eins-zu-Viele-Abfragekonfiguration von MyBatis: Um häufig auftretende Abfrageprobleme zu lösen, sind spezifische Codebeispiele erforderlich. Bei der tatsächlichen Entwicklungsarbeit stoßen wir häufig auf Situationen, in denen wir das Hauptentitätsobjekt und die damit verbundenen mehreren Slave-Entitätsobjekte abfragen müssen . In MyBatis ist die Eins-zu-viele-Abfrage eine gängige Datenbankzuordnungsabfrage. Bei korrekter Konfiguration können die Abfrage, Anzeige und Bedienung verknüpfter Objekte problemlos realisiert werden. In diesem Artikel wird die Konfigurationsmethode für Eins-zu-Viele-Abfragen in MyBatis vorgestellt und erläutert, wie einige häufig auftretende Abfrageprobleme gelöst werden

Mit der Weiterentwicklung der Netzwerktechnologie kommt es immer häufiger zu Angriffen auf Datenbanken. SQL-Injection ist eine der häufigsten Angriffsmethoden. Angreifer geben schädliche SQL-Anweisungen in das Eingabefeld ein, um illegale Vorgänge auszuführen, was zu Datenverlust, Manipulation oder sogar Löschung führt. Um SQL-Injection-Angriffe zu verhindern, müssen Entwickler beim Schreiben von Code besondere Aufmerksamkeit auf sich ziehen und bei der Verwendung eines ORM-Frameworks wie MyBatis einige Best Practices befolgen, um die Sicherheit des Systems zu gewährleisten. 1. Parametrisierte Abfrage Parametrisierte Abfrage ist das Anti-
