1. Einführung in MyBatis
MyBatis ist ein hervorragendes Rahmen für Persistenzschicht, das einfache SQL -Abfragen, gespeicherte Verfahren und erweiterte Zuordnung unterstützt.
MyBatis eliminiert manuelle Einstellungen fast aller JDBC -Code und -Parameter sowie die Suche in der Ergebnisse des Ergebnissatzes.
MyBatis kann einfache XML oder Anmerkungen zur Konfiguration und Rohzuordnung, Mapping -Schnittstellen und Javas Pojos (einfache alte Java -Objekte) in Datenbank in der Datenbank verwenden.
JDBC -> DBUTILS (Auto -Enkapsulation) -> MyBatis -> Hibernate
MyBatis schreibt SQL in XML und greift dann auf die Datenbank zu.
2. Beginnen Sie mit MyBatis
2.1. Erstellen Sie ein neues Java -Projekt
Fügen Sie MyBatis und MySQL Triver Jar: MyBatis-3.1.1.Jar, MySQL-Connector-Java-5.1.7-Bin.jar hinzu
2.2. Erstellen Sie eine neue Tabelle
Datenbank erstellen mybatis; Verwenden Sie MyBatis; Tabelle Benutzer erstellen (ID int Primary Key Auto_increment, Name Varchar (20), Alter int); Einfügen in Benutzer (Name, Alter) Werte ('Tom', 12); Einfügen in Benutzer (Name, Alter) Werte ('Jack', 11);2.3. Fügen Sie MyBatis -Konfigurationsdatei conf.xml hinzu
<? id = "Entwicklung"> <transactionManager type = "jdbc" /> <dataSource type = "Pooled"> <Eigenschaft name = "treiber" value = "com.mysql.jdbc.driver name = "password" value = "root"/> </dataSource> </umwelt> </Umgebungen> </configuration>
2.4. Definieren Sie die Entitätsklasse, die der Tabelle entspricht
Public Class User {private int id; privater String -Name; privates int Alter; // Get, setzen Sie die Methode}2.5. Definieren Sie die SQL Mapping -Datei usermapper.xml, die die Benutzertabelle betreibt
<? namespace = "com.atguigu.mybatis_test.test1.usermapper"> <select id = "getUser" parameterType = "int" resultType = "com.atguigu.mybatis_test.test1.user"> SELECT * von Benutzern, wobei Id =#{id} </select.Test.test1.user "> select * von Benutzern, wob2.6. Registrieren Sie userMapper.xml -Datei in der conf.xml -Datei
<mappers> <mapper ressource = "com/atguigu/mybatis_test/test1/usermapper.xml"/> </mappers>
2.7. Schreiben von Testcode: Führen Sie definierte Auswahlanweisungen aus
public class Test {public static void main(String[] args) throws IOException {String resource = "conf.xml";//Load the configuration file of mybatis (it also loads the associated mapping file) Reader reader = Resources.getResourceAsReader(resource);//Build the factory of sqlSessionFactory sessionFactory = new SQLSessionFactoryBuilder (). Build (Reader); // Erstellen Sie eine SQLSESsionsQLSession -Sitzung, die SQL in der Mapping -Datei ausführen kann. SQLUSER User = Session.Selectone (Anweisung, 1); System.out.println (Benutzer);}}3. Betreiben Sie den CRUD der Benutzertabelle
3.1.XML Implementierung
3.1.1. Definieren Sie die SQL Mapping XML -Datei:
<insert id = "InsertUser" parameterType = "com.atguigu.ibatis.bean.user"> in Benutzer einfügen (Name, Alter) Werte (#{name},#{ay}); parameterType="com.atguigu.ibatis.bean.User">update users set name=#{name},age=#{age} where id=#{id}</update><select id="selectUser" parameterType="int" resultType="com.atguigu.ibatis.bean.User">select * from users where id =#{id} </select> <select id = "selectAllusers" resultType = "com.atguigu.ibatis.bean.user"> Select * von Benutzern </select>3.1.2. Registrieren Sie diese Zuordnungsdatei in config.xml
<Mapper Resource = "com/atguigu/ibatis/bean/usermapper.xml"/>
3.1.3. In Dao gerufen
öffentlicher Benutzer getUserById (int id) {SQLSession Session = Sessionfactory.OpenSession (); user user = session.Selectone (URI+". SelectUser", ID); Rückgabe des Benutzer;}3.2. Implementierung von Anmerkungen
3.2.1. Definieren Sie die Schnittstelle für die SQL -Zuordnung
public interface UserMapper {@Insert("insert into users(name, age) values(#{name}, #{age})")public int insertUser(User user);@Delete("delete from users where id=#{id}")public int deleteUserById(int id);@Update("update users set name=#{name},age=#{age} where id =#{id} ") public int updateUser (Benutzer Benutzer);@SELECT (" SELECT * von Benutzern wob3.2.2. Registrieren Sie diese Zuordnungsschnittstelle in der Konfiguration
<maper/>
3.2.3. In Dao gerufen
öffentlicher Benutzer getUserById (int id) {SQLSession Session = Sessionfactory.OpenSession (); UsMapper mapper = session.getMapper (userMapper.class); User User4.. Mehrere Orte, die optimiert werden können
4.1. Die Konfiguration für eine Verbindung zur Datenbank kann separat in eine Eigenschaftendatei platziert werden.
## db.properties <br> <Properties ressourcen = "db.properties" /> <Eigenschaft name = "treiber" value = "$ {treiber}" /> <Eigenschaft name = "url" value = "$ {url}" /> <Property name = "username" value = "$ {username}" /> <Stiefname4.2. Definieren Sie Alias für Entitätsklassen und vereinfachen Sie die Referenzen in SQL Mapping XML -Dateien
<typealias> <typealias type = "com.atguigu.ibatis.bean.user" alias = "_ user"/> </typealiases>
4.3. Sie können die Log4J -Konfigurationsdatei unter SRC hinzufügen, um Protokollinformationen zu drucken
1. Fügen Sie JAR hinzu:
log4j-1.2.16.jar
2.1. log4j.properties (Methode 1)
log4j.properties, log4j.rootlogger = debug, console#consolelog4j.appender.console = org.apache.log4j.consoladenderLog4j.appender.console.layout = org.apache.log4j.patternlayoutlog4j.appender.console %-5p [ %c] - %M%nLog4j.Logger.java.sql.resultset = infolog4j.logger.org.apache = infolog4j.logger.java.sql.connection = debugog4j.logger.java.sql.statement = debuglog4j.log4j.Logger.java.
2.2. log4j.xml (Methode 2)
<? value = "%-5p%d {mm-dd hh: mm: ss, ss}%m (%f:%l) /n" /> < /layout> < /appender> <logger name = "java.sql"> <Level Value = "Debugger" /> < /logger> <logger name = "org.apache.ibatis"> <Level ". /> < /logger> <root> <Level value = "debug" /> <Appender-ref ref = "stdout" /> < /root> < /log4j: configuration>5. Lösen Sie Konflikte zwischen Feldnamen und Entitätsklassenattributnamen
5.1. Bereiten Sie Tische und Felder vor
Erstellen Sie Tabellenbestellungen (Order_id int Primary Key Auto_increment, Order_no varchar (20), order_price float); Werte einfügen (order_no, order_price) ('aaaa', 23); Einfügen in Bestellungen (order_no, order_price) Werte ('bbbbbbB', 33).5.2. Entitätsklassen definieren
öffentliche Klasse {private int id; private String orderno; privater Float Price;}5.3. Implementieren Sie die Abfrage von getOrderById (ID):
Methode 1: Definieren Sie Alias in SQL -Anweisungen
<select id = "selectorder" parameterType = "int" resultType = "_ order"> order_id id, order_no orderNo, order_price preis aus Bestellungen wobei Order_id =#{id} </select>Methode 2: durch <resultmap>
<select id = "selectOrderResultmap" parameterType = "int" resultMap = "orderResultMap"> select * aus Bestellungen wobei order_id =#{id} </select> <resultMap type = "_ order" id = "orderResultmap"> <id Property = "id" id "id" order_id "/<sergebnisse"/<sergebnisse "/<sergebnisses Eigenschaft = "Preis" column = "order_price"/> <result properation = "price" column = "order_price"/> <resultmap>6. Assoziationstabelle Abfrage implementieren
6.1. Eins-zu-Eins-Verein
6.1.1. Anforderungen vorschlagen
Abfrageberichtinformationen basierend auf Klassen -ID (Informationen mit Lehrer)
6.1.2. Erstellen Sie Tabellen und Daten
Tabellenlehrer erstellen (t_id int primärschlüssel auto_increment, t_name varchar (20)); erstellen table class (c_id int primary key auto_increment, c_name varchar (20), lehrer_id int); In den Lehrer (t_name) Werte einfügen ('ls1'); in den Lehrer einfügen (t_name) Werte ('ls2'); Einfügen in die Klasse (c_name, lehrer_id) Werte ('bj_a', 1); in die Klasse einfügen (c_name, lehre_id) Werte ('bj_b', 2);6.1.3. Entitätsklassen definieren:
öffentlicher Klassenlehrer {private int id; privater String -Name;} öffentliche Klassenklassen {private int id;6.1.4. Definieren Sie die SQL Mapping -Datei classMapper.xml
<!-Methode 1: Verschachtelte Ergebnisse: Verwenden Sie verschachtelte Ergebniskarten, um eine Untergruppe von doppelten gemeinsamen Ergebnissen auszuwählen * aus der Klasse C, Lehrer T, Schüler S wobei C.Teacher_id = T.T_ID und C.C_ID = s.class_id und c.c_id = 1-> <select id = "getClass3" ParameterType = "int" -Student "-Student" -Student "-Student" -Student "-Student" -Striebs-, "classMap =" SelectMap = "SelectMap3"> von user. C.Teacher_ID = T.T_ID und C.C_ID = S.CLASS_ID und C.C_ID = 1-> <select id = "getClass3" parameterType = "int" resultmap = "classResultmap3"> select * from closc, ehrer t, student S, wo C.Teacher_id = T.T_ID und C.C_ID = S. S.CLASS = S. CLASS_ID = S. CLASS_ID_ID_ID_S_ID_ID_ID_ID_ID_ID_ID_ ID und C. und C.C_ID = S. S. c.c_id=#{id}</select><resultMap type="_Classes" id="ClassResultMap3"><id property="id" column="c_id"/><result property="name" column="c_id"/><association property="teacher" column="teacher_id" javaType="_Teacher"><id property="id" column="t_id"/><result Property = "Name" column = "t_name"/> <result properation = "name" column = "t_name"/> </assoziation> <!-OFTYPE gibt den Objekttyp in der Erfassung der Schüler an-> <collection property = "student" ofType = "_ student"> <id Property = "id" id "spalten =" s_id "/> <resulting =" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name " column = "s_name"/> </collection> </resultmap> <!-Methode 2: verschachtelte Abfrage: Geben Sie den erwarteten komplexen Typ zurück, indem Sie eine andere SQL-Mapping-Anweisung ausführen * Aus der Klasse, wobei c_id = 1; auswählen * aus dem Lehrer, wobei t_id = 1 // 1 der Wert des Wertes von Lehrer erhalten hat. id = "getClass4" parameterType = "int" resultMap = "classResultMap4"> SELECT * Aus der Klasse wob column = "lehrer_id" javatype = "_ lehrer" select = "getTeacher2"> </assoziation> <collection Eigenschaft = "Schüler" vontype = "_ Schüler" column = "c_id" select = "getstudent"> </collection> </resultMap> <selektion id Wobei t_id =#{id} </select> <select id = "getStudent" parameterType = "int" resultType = "_ student"> Select S_id ID, S_Name Name von student WHERE CLASS_ID =#{ID} </Select>6.1.5. Prüfen
@TestPublic void testoo () {sqlSession sqlSession = factory.openSession (); Klassen c = sqlSession.Selectone ("com.atguigu.day03_mybatis.Test5.Oomapper.getClass", 1); sqlSession = factory.openSession (); Klassen c = sqlSession.selectone ("com.atguigu.day03_Mybatis.Test5.Oomapper.getClass2", 1); System.out.println (c);}6.2. Eins-zu-Viele-Assoziation
6.2.1. Anforderungen vorschlagen
Fragen Sie die entsprechenden Klasseninformationen gemäß ClassID ab, einschließlich Schülern und Lehrern
6.2.2. Erstellen Sie Tabellen und Daten:
Erstellen Sie die Tabellenstudentin (S_ID int Primary Key Auto_increment, s_name varchar (20), class_id int); Einfügen in Schüler (s_name, class_id) Werte ('xs_a', 1); Einfügen in Schüler (s_name, class_id) Werte ('xs_b', 1); class_id) values ('xs_d', 2); in den Schüler einfügen (s_name, class_id) values ('xs_e', 2); Einfügen in den Schüler (s_name, class_id) values ('xs_f', 2);6.2.3. Entitätsklassen definieren
öffentliche Klasse Student {private int id;6.2.4. Definieren Sie die SQL Mapping -Datei classMapper.xml
<!-Methode 1: Verschachtelte Ergebnisse: Verwenden Sie verschachtelte Ergebniskarten, um eine Untergruppe von doppelten gemeinsamen Ergebnissen auszuwählen * aus der Klasse C, Lehrer T, Schüler S wobei C.Teacher_id = T.T_ID und C.C_ID = s.class_id und c.c_id = 1-> <select id = "getClass3" ParameterType = "int" -Student "-Student" -Student "-Student" -Student "-Student" -Striebs-, "classMap =" SelectMap = "SelectMap3"> von user. C.Teacher_ID = T.T_ID und C.C_ID = S.CLASS_ID und C.C_ID = 1-> <select id = "getClass3" parameterType = "int" resultmap = "classResultmap3"> select * from closc, ehrer t, student S, wo C.Teacher_id = T.T_ID und C.C_ID = S. S.CLASS = S. CLASS_ID = S. CLASS_ID_ID_ID_S_ID_ID_ID_ID_ID_ID_ID_ ID und C. und C.C_ID = S. S. c.c_id=#{id}</select><resultMap type="_Classes" id="ClassResultMap3"><id property="id" column="c_id"/><result property="name" column="c_id"/><association property="teacher" column="teacher_id" javaType="_Teacher"><id property="id" column="t_id"/><result Property = "Name" column = "t_name"/> <result properation = "name" column = "t_name"/> </assoziation> <!-OFTYPE gibt den Objekttyp in der Erfassung der Schüler an-> <collection property = "student" ofType = "_ student"> <id Property = "id" id "spalten =" s_id "/> <resulting =" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name "name" name " column = "s_name"/> </collection> </resultmap> <!-Methode 2: verschachtelte Abfrage: Geben Sie den erwarteten komplexen Typ zurück, indem Sie eine andere SQL-Mapping-Anweisung ausführen * Aus der Klasse, wobei c_id = 1; auswählen * aus dem Lehrer, wobei t_id = 1 // 1 der Wert des Wertes von Lehrer erhalten hat. id = "getClass4" parameterType = "int" resultMap = "classResultMap4"> SELECT * Aus der Klasse wob column = "lehrer_id" javatype = "_ lehrer" select = "getTeacher2"> </assoziation> <collection Eigenschaft = "Schüler" vontype = "_ Schüler" column = "c_id" select = "getstudent"> </collection> </resultMap> <selektion id Wobei t_id =#{id} </select> <select id = "getStudent" parameterType = "int" resultType = "_ student"> Select S_id ID, S_Name Name von student WHERE CLASS_ID =#{ID} </Select>6.2.5. Prüfen
@Testpublic void Testom () {SQLSession SQLSession = factory.openSession (); Klassen c = sqlSession.Selectone ("com.atguigu.day03_mybatis.Test5.Oomapper.getClass3", 1); sqlSession = factory.openSession (); Klassen c = sqlSession.selectone ("com.atguigu.day03_Mybatis.Test5.Oomapper.getClass4", 1); System.out.println (c);}7. Dynamische SQL und Fuzzy -Abfrage
7.1. Anforderungen
Implementieren Sie einen Multi-Kondition-Abfragebenutzer (Name Fuzzy-Matching, Alter zwischen dem angegebenen Mindestwert und dem Maximalwert).
7.2. Bereiten Sie Datenbank und Tabellen vor
Tabelle erstellen D_USER (ID int Primärschlüssel Auto_increment, Name Varchar (10), Alter int (3)); Einfügen in d_user (Name, Alter) Werte ('Tom', 12); In D_USER (Name, Alter) Werte einfügen ('Bob', 13); In D_USER (Name, Alter) Werte einfügen ('Jack', 18); 7.3.Konditionuser (Abfrage Bedingte Entitätsklasse) privater Zeichenfolge Name; private int minage; private int maxage;7.4.Usertabelle Entitätsklasse
private int id; privater Zeichenfolge Name; privates Int -Alter;
7.5.usmapper.xml (Kartendatei)
<? namespace="com.atguigu.day03_mybatis.test6.userMapper"><select id="getUser" parameterType="com.atguigu.day03_mybatis.test6.ConditionUser" resultType="com.atguigu.day03_mybatis.test6.User">select * from d_user where Alter> =#{Minage} und Alter <=#{Maxage} <if test = 'name!7.6.Ausertest (Test)
public class usertest {public static void main (String [] args) löst IOException aus {reader reader = ressourcen.getResourceasReader ("conf.xml"); "com.atguigu.day03_mybatis.test6.usermapper.getUser"; Liste <Benutzer> list = SQLSession.SelectList (Anweisung, New Conditionuser ("%a%", 1, 12); System.out.println (Liste);}}}}}}}Dynamische SQL -Tags in MyBatis verfügbar
8. Aufrufen von gespeicherten Verfahren
8.1. Nachfrage stellen
Fragen Sie die Anzahl der Männer oder Frauen ab, wenn das Eingang 0 ist, weibliche Männer, sonst Männer
8.2. Erstellen Sie Datenbanktabellen und gespeicherte Prozeduren:
Tabelle P_USER erstellen (ID int Primary Key Auto_increment, Name Varchar (10), Sex -Char (2)); Einfügen in p_user (Name, Sex) Werte ('a', "männlich"); Einfügen in p_user (Name, Sex) Werte ('B', "weiblich"); Einfügen in p_user (Name, Sex) Werte ('C', "männlich"); #Create gespeicherte Prozedur (suchen Sie die Anzahl der Männer oder Frauen, wenn das Eingang 0 ist, Frauen sind ansonsten Männer) Trenner $ Create Procedure mybatis.ges_User_count (in sex_id int, user_count int) begin, wenn sex_id = 0 thenselect count (*) von mybatis. mybatis.p_user wobei p_user.sex = 'male' in user_count; enden if; $#call gespeicherte Prozedur Decrimiter; set @User_Count = 0; Rufen Sie myBatis.ges_User_Count (1, @User_Count); select @User_Count;8.3. Erstellen Sie die Entitätsklasse der Tabelle
öffentliche Klasse Benutzer {private String -ID; privater String -Name; private String Sex;}8.4.usmapper.xml
<Mapper Namespace = "com.atguigu.mybatis.test7.usermapper"> <!-Abfrage erhält die Anzahl der Männer oder Frauen. Wenn das Eingang 0 ist, dann sind Frauen ansonsten Männer. id = "getCountMap"> <parameter Eigenschaft = "sex_id" modus = "in" jdbctype = "Integer"/> <parameter properation = "user_count" modus = "out" jdbctype = "Integer" // </parametermap> </mapper>
8.5. Prüfen
Karte <String, Integer> parammap = new HashMap <> (); Parammap.put ("sex_id", 0); Selectone (Anweisung, Parammap); Integer userCount = parammap.get ("user_count"); system.out.println (userCount);9. MyBatis Cache
9.1. Verstehe MyBatis Cache
Wie die meisten Persistenzschicht -Frameworks bietet MyBatis auch L1- und L2 -Caches.
1. Cache Level 1: Hashmap Lokaler Cache basierend auf PerpetualCache, der Speicherbereich ist Sitzung. Nach der Sitzung oder Schließen werden alle Caches in der Sitzung gelöscht.
2. Der Mechanismus des sekundären Cache ist der gleiche wie der des primären Cache. Standardmäßig verwendet es auch Perpetualcache und HashMap -Speicher. Der Unterschied besteht darin, dass sein Speicherbereich Mapper (Namespace) ist und die Speicherquelle wie EHCache anpassen kann.
3.. Für den Cache-Daten-Update-Mechanismus werden bei C/U/D-Operationen, wenn ein bestimmter Bereich (C/U/D-Operationen der zweiten Stufe Cache-Namespaces) ausgeführt wird, alle Caches in Selects unter diesem Bereich standardmäßig gelöscht.
9.2.Mybatis Level 1 Cache
9.2.1. Abfrage basierend auf der Aufgabe
Fragen Sie das entsprechende Benutzerdatensatzobjekt basierend auf der ID ab.
9.2.2. Bereiten Sie Datenbanktabellen und Daten vor
Tabelle C_USER erstellen (ID int Primärschlüssel Auto_increment, Name Varchar (20), Alter int); Einfügen in c_user (Name, Alter) Werte ('Tom', 12); Einfügen in C_User (Name, Alter) Werte ('Jack', 11);9.2.3. Erstellen Sie die Entitätsklasse der Tabelle
öffentliche Klasse User implementiert serialisierbare {private int id; private String -Name; privates int Alter;9.2.4.usmapper.xml
<? namespace = "com.atguigu.mybatis.test8.usmapper"> <select id = "getUser" parameterType = "int" resultType = "_ cuser"> select * aus c_user wob Age =#{älter} wobei id =#{id} </update> </makePer>9.2.5. Testen
/** Stufe 1 Cache: Das heißt, Cache auf Sitzungsstufe (standardmäßig)*/@testpublic void testcache1 () {SQLSession Session = mybatisutils.getSession (); String Anweisung = "com.atguigu.mybatis.Test8.UsMaper.GetUser.Ger. 1); System.out.println (Benutzer);/** Stufe 1 wird standardmäßig verwendet*//*user = session.Selectone (Anweisung, 1); System.out.println (Benutzer);*//*1. Es muss die gleiche Sitzung sein. Wenn das Sitzungsobjekt geschlossen wurde (), ist es unmöglich, es zu verwenden. Die Abfragebedingungen sind gleich*//*user = session.Selectone (Anweisung, 2); System.out.println (Benutzer);*//*3. Session.clearcache () wurde nicht ausgeführt, um den Cache*//*Session.clearcache (); user = session.Selectone (Anweisung, 2); System.out.println (Benutzer) zu reinigen;*//*4. Keine Operationen, die hinzugefügt, gelöscht und geändert wurden (diese Operationen werden den Cache aufräumen)*//*Session.9.3.Mybatis Level 2 Cache
9.3.1. Fügen Sie in UsMapper.xml einen <cache> hinzu
<Mapper Namespace = "com.atguigu.mybatis.test8.usermapper"> <cache/>
9.3.2. Testen
/** Teststufe 2 Cache*/@testpublic void testcache2 () {String Anweisung = "com.atguigu.mybatis.test8.usermapper.getUser"; 1); Session.Commit (); System.out.println ("user ="+user);9.3.3. Ergänzungsnotizen
1. Alle Auswahlanweisungen in der Mapping -Anweisungsdatei werden zwischengespeichert.
2. Nachdem Sie alle Anweisungen in der Anweisungsdatei einfügen, aktualisieren und löschen, aktualisieren Sie den Cache.
3. Der Cache wird unter Verwendung des am wenigsten verwendeten (LRU, am wenigsten verwendeten) Algorithmus wiedergegeben.
4. Der Cache wird nach dem angegebenen Zeitintervall aktualisiert.
5. Der Cache speichert 1024 Objekte
<Cacheeviction = "FIFO" // Die Recycling-Strategie ist First-in, First-out flushinterval = "60000" // Automatische Aktualisierungszeit 60SSIZE = "512" // Cache bis zu 512 Referenzobjekte readonly = "true" // Lesen Sie nur
10. Spring Integration MyBatis
10.1. Glas hinzufügen
【Mybatis】
mybatis-3.2.0.jar
mybatis-pring-1.1.1.jar
log4j-1.2.17.jar
【Frühling】
Spring-AOP-3.2.0.Release.jar
Spring-Beans-3.2.0.Release.jar
Spring-Context-3.2.0.Release.jar
Spring-Core-3.2.0.Release.jar
Spring-Expression-3.2.0.Release.jar
Spring-Jdbc-3.2.0.Release.jar
Spring-Test-3.2.4.Release.jar
Spring-TX-3.2.0.Release.jar
Aopalliance-1.0.jar
cglib-nodep-2.2.3.jar
Commons-Logging-1.1.1.Jar
【Mysql Treiberpaket】
Mysql-Connector-Java-5.0.4-binin.jar
10.2. Datenbanktabellen
TABLE CREATE S_USER (user_id int auto_increment Primärschlüssel, user_name varchar (30), user_birthday Datum, User_Salary Double)
10.3. Entitätsklasse: Benutzer
Public Class User {private int id; privater Zeichenfolge Name; privates Datum Geburtstag; privates Doppelgehalt; // Setzen Sie Methode}10.4.DAO -Schnittstelle: UsMapper (xxxmapper)
öffentliche Schnittstelle UsMapper {void Save (Benutzer Benutzer);10.5.SQL Mapping -Datei: usermapper.xml (der gleiche Name wie die Schnittstelle ignoriert Großbuchstaben und Großbuchstaben)
<? namespace = "com.atguigu.mybatis.test9.usmapper"> <resultmap type = "user" id = "userresult"> <result column = "user_id" Property = "id"/> <resultal column = "user_name" property = "name"/> <resultaly "user_birtday" sachday "saly ="/> <Bestroming "/". column = "user_Salary" Property = "Gehalt"/> <resultMap> <!-Erhalten Sie die ID nach Einfügen von Daten-> <Einfügen id = "speichern" keycolumn = "user_id" keyProperty = "id" useGeneratedkeys = "true"> in Einfügen in einfügen> s_user(user_name,user_birthday,user_salary)values(#{name},#{birthday},#{salary})</insert><update id="update">update s_userset user_name = #{name},user_birthday = #{birthday},user_salary = #{salary}where user_id = #{id}</update><delete id="delete">delete from s_userwhere user_id = #{id}</delete><select id="findById" resultMap="userResult">select *from s_userwhere user_id = #{id}</select><select id="findAll" resultMap="userResult">select *from S_USER </select> </makePer>10.6.Spring -Konfigurationsdatei: beans.xml
<xml Version = "1.0" coding = "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: tx =" http://www.spingframework.org/schema/tx "xsi: Schemalocation =" aMework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-32.xsdhttp://www.springframework.org/schema/Context/sprin g-context-3.2.xsdhttp: //www.springframework.org/schema/tx/spring-tx-3.2.xsdhttp: //www.springframework.org/schema/tx/spring-32.xsd "> <!----<!-------------------- 1. Datenquelle: DriverManagerDataSource -> <bean id = "dataSource" class = "org.springFramework.jdbc.datasource.driverManagerDataSource"> <Property name = "triverClassName" value = "com.mysql.jdbc.driver"/> < value = "jdbc: mysql: // localhost: 3306/mybatis"/> <Eigenschaft name = "userername" value = "root"/> <Eigenschaft name = "Passwort" value = "root"/> </bean> <!-2. MyBatis 'SQLSession Factory: value = "com.atigu.spring_mybatis2.domain"/> </bean> <!-3. MyBatis scannt automatisch nach SQL-Zuordnungsdateien: mapperscannerConfigurersqlSessionFactory/Basepackage-> <bean> <Eigenschaft name = "Basepackage" value = "com.aTigu.spring_mybatis2.mapper"/> <Eigenschaftsname = " Transaktionsmanagement: DataSourcetRansActionManager-> <bean id = "txManager"> <Eigenschaft name = "dataSource" ref = "dataSource"/> </bean> <!-5. Verwenden Sie deklarative Transaktion-> <tx: Annotationsgetriebene Transaktion-Manager = "Txmanager"/> </> </bohnen>
10.7.Mybatis-Konfigurationsdatei: mybatis-config.xml
<? Unnötig-> <!-Setzen Sie die externe Konfigurationsdatei-> <!-Einen Kategorienamen-> <!-Setzen Sie die Datenbankverbindungsumgebung-> <!-Mapping-Datei-> </configuration>
10.8. Prüfen
@Runwith (SpringJunit4ClASSRunner.class) // SpringTest -Test Framework @ContextConfiguration ("/beans.xml") // Konfiguration öffentliche Klasse SMTEST {@AutowRed // Private Usermapper Usermapper; @Testpublic void () {) usermapper () usetbirthday () {) {) {) {{) user user (); Date ()); user.setName ("mary"); user.setSalary (300); UsMapper.save (Benutzer); System.out.println (user.getId ());}@testpublic void update () {user user = UsMaper.findbyID (2); user.setsalary (2000); delete () {usermapper.delete (3);}@testpublic void findById () {user user = userMapper.findbyId (1); System.out.println (Benutzer);}@testpublic void findall () {list usws = usermapper.findall ();Die oben genannte ist die schnelle Einführung in MyBatis (präzise und einfache Analyse und leicht verständliche), die vom Editor eingeführt wird. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!