MyBatis ist ein Persistenzschicht -Framework, das normale 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 ursprüngliche Zuordnung, Mapping -Schnittstellen und Javas Pojo (einfache alte Java -Objekte) in Datenbank in der Datenbank verwenden.
Jede MyBatis -Anwendung nimmt eine Instanz des SQLSessionFactory -Objekts als Kern.
Eine Instanz des SQLSessionFactory -Objekts kann durch das SQLSessionFactoryBuilder -Objekt erhalten werden. Das SQLSessionFactoryBuilder -Objekt kann über die XML -Konfigurationsdatei oder aus der Konfigurationsklasseninstanz erstellt werden, die im vorherigen Verwaltungsmanagement erstellt wurde.
DataSource dataSource = blogDataSourceFactory.getBlogDataSource (); TransactionFactory TransactionFactory = new JdbctransactionFactory (); // Umgebungsumgebung Umgebung = Neue Umgebung ("Entwicklung", TransactionFactory, DataSource); Konfiguration Konfiguration = Neue Konfiguration (Umgebung); // MAKTER -SPASSION; // MAKTIRE -Klassen; // Mapper -Klassen; // Mapper -Klassen; // Mapper -Klassen; // Mapper -Klassen; // Mapper -Klassen; // Mapper -Klassen; // Mapper -Klassen; // Mapper -Klassen; // Mapper -Klassen; configuration.addmapper (blogmapper.class);Beachten Sie, dass in diesem Fall die Konfiguration die Mapper -Klasse hinzufügen soll. Mapper -Klassen sind Java -Klassen, die Annotationen von SQL -Zuordnungsanweisungen enthalten, um Abhängigkeiten in XML -Dateien zu vermeiden. In den meisten erweiterten Zuordnungen (z. B. verschachtelte Join Mapping) ist jedoch noch XML -Zuordnung erforderlich.
Aus diesem Grund findet und lädt MyBatis eine Peer -XML -Datei automatisch (in diesem Fall, basierend auf dem Klassennamen der BlogMapper.klassenklasse unter dem Klassenpfad automatisch und lädt myBatis automatisch eine Peer -XML -Datei.
<? <!-Es kann das Problem lösen, dass der Name der Modelleigenschaft mit dem Spaltenspaltennamen in der Datentabelle jdbcType nicht mit dem Namen des Spaltenspaltens nicht eingeschrieben werden muss-> <resultmap type = "Benutzer" id = "usermap"> <id Eigenschaft "id" id "column =" id "javatype =" int "jdbctype =" integerger "/> <Eltr." jdbctype = "varchar"/> <result properation = "age" column = "age" javatype = "int" jdbctype = "Integer"/> </resultMap> <!- Beachten Sie das Ergebnis hier. Wenn Spalte == Eigenschaft, können Sie das Java -Objekt direkt zurückgeben. Wenn der Attributname mit dem Spaltennamen nicht im Widerspruch steht, lautet die Lösung wie folgt: 1. Verwenden Sie resultMap; 2. Return Hashmap; 3. Use alias for the query statement--> <select id="getUser" parameterType="int" resultMap="UserMap"> select * from t_user where id=#{id} </select> <delete id="deleteUser" parameterType="int" > delete from t_user where id=#{id} </delete> <update id="updateUser" parameterType = "user"> aktualisieren t_user username =#{name}, ay = {ay} wob Verwenden Sie also das Ergebnis usermap -> <select id = "getUsers" resultMap = "usermap"> select * von t_user </select> </mapper> Registrieren Sie sich bei mybatis.xml [Wenn diese Konfigurationsdatei kombiniert wird, ist nicht erforderlich]
MyBatis -Konfigurationsdatei
<? <!-Konfigurieren Sie die Entitätsklasse alias-> <typealias> <!-<typealias type = "com.web.model type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </Umgebungen> <mappers> <mapper ressourcen = "com/web/mapper/usermapper.xml"/> <mapper resource = "com/web/maper/ordermapper.xml"/> <mapper/> </mappers> </configuration> </configuration>Hier verwenden wir die XML -Datei, um die SQLSessionFactory und SQLSession zu erhalten.
public static sqlSessionFactory getfactory () {/*Flow the Src Dir*/String Resource = "mybatis.xml";/*mybatisutils.class.getResourceAsStream (Ressource) ----- Es ist falsch !!! * Bitte unterscheiden Sie die beiden nach oben und unten * * */InputStream InputStream = MyBatisutils.class.getClassloader (). getResourceAsStream (Ressource); Lösungen: 1.Factory.openSession (wahr); 2.Session.commit (); */ /*Verwenden Sie SQL XML NICHT Annotation*/@test public void testadd () {SQLSession Session commit*/session.commit (true); session.close (); System.out.println ("Effect -Zeiger .."+Insert);}@test public void testSelect () {/*auto comit festlegen, was gleichermaßen mit der obigen*/sqlSession Session = mybatisutils.getfactory (). "com.web.mapper.usMapper.getUser";/*Return the Effect -Zeiger*/user user = session.selectone (Anweisung, 3); System.out.println ("Effektreihen .."+user);}@test public void testupdate () {SQLSession Session = mybatisUtils (). "com.web.mapper.usermapper.Updateuser";/*Return the Effect -Zeiger*/int update = session.update (Anweisung, neuer Benutzer (3, "tom4", 13)); MyBatisutils.getFactory (). OpenSession (); String ERSTELLUNG = "com.web.mapper.usMapper.DeleteUser";/*Return the Effect -Zeilen*/int delete = session.delete (Erklärung, 6);/*Commit von selbst*/Session.commit (). void testgetUlers () {SQLSession Session Zeilen .. "+Benutzer); Sitzung.CLOSE ();}ParameterType und Ergebnistyp sind HashMap:
<select id = "getUserFormap" parameterType = "HashMap" resultType = "HashMap"> SELECT * von c_user wobei id =#{id}; </select> @Test public void getUserFormap () {SQLSession Session Session.Selectone (Anweisung, MAP);/*Standard ist nicht automatisch Commn. Effektzreihen .. {id = 1, Alter = 12, name = luli}, Klasse: Klasse java.util.hashMapZusammenfassend lässt sich sagen, dass MyBatis automatisch entsprechend dem Parametertyp und dem Ergebnistyp analysiert und eingekapselt wird.
<select id = "getListPage" parameterType = "Hashmap" resultMap = "SiteEttendDaOMAP"> ID, SITETE_ID, SITTEL_NAME, SITTEL_NUMBER, Provinz, Stadt, Bereich, Adresse, interne_number, Longitude, Latitude aus tb_sites -use dynamic sql <prefix = "wob null und checkstate! concat ('%', #{sitzeame}, '%') </if> <if test = "SiteNumber! #{SaTenumber}, '%') </if> <if test = "provinz! = null und provinz! --Add sortieren <if test = "sortname! = Null und sortName! = '' Und sortOrder!Wenn der Parameter Pojo ist, erhält MyBatis die ID automatisch aus dem Objekt.
<delete id = "parameterType =" user "> löschen aus tb_user wobei id = {id} </delete> <delete id =" deleteById "parameterType =" long "> aus tb_user wobei id = #{id} </delete> long" long} </delete> löschen <delete id = "deleteByIds"> aus TB_USER löschen wobei ID in -Use foreach <foreach collection = "list" item = "id" open = "(" separator = "," close = ")") "> #{id} </foreach> </delete>Normalerweise in Verbindung mit GetListPage verwendet.
<select id = "getrows" parameterType = "HashMap" resultType = "long"> select count (*) aus tb_sys_rol <if test = "keysySrol! </if> <if test = "keySysRol.name! = null und keysysrol.name! </if> </select>
Das obige ist der gesamte Inhalt dieses Artikels über MyBatis mit XML für die Codeanalyse. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!