MyBatis est un cadre de couche de persistance qui prend en charge les requêtes SQL ordinaires, les procédures stockées et la cartographie avancée.
MyBatis élimine les paramètres manuels de presque tous les code et paramètres JDBC et l'encapsulation de recherche de l'ensemble de résultats.
MyBatis peut utiliser du XML ou des annotations simples pour la configuration et la cartographie originale, les interfaces de cartographie et le POJO de Java (Old Java objets) en enregistrements dans la base de données.
Chaque application MyBatis prend une instance de l'objet SQLSessionFactory comme noyau.
Une instance de l'objet SQLSessionFactory peut être obtenue via l'objet SQLSessionFactoryBuilder. L'objet SQLSessionFactoryBuilder peut être construit via le fichier de configuration XML ou à partir de l'instance de classe de configuration préparée dans la gestion de l'utilisation précédente.
DataSource dataSource = blogDatasourcefactory.getBlogDataSource (); TransactionFactory TransactionFactory = new JDBCTransactionFactory (); // Environment Environment Environment = New Environment ("Development", TransactionFactory. sqlSessionFactory = new SQLSessionFactoryBuilder (). build (configuration);Notez que dans ce cas, la configuration consiste à ajouter la classe de mapper. Les classes de mappers sont des classes Java, qui contiennent des annotations des instructions de mappage SQL pour éviter les dépendances dans les fichiers XML, mais le mappage XML est toujours requis dans la plupart des mappages avancés (tels que la cartographie de jointure imbriquée).
Pour cette raison, si un fichier de configuration XML existe, MyBatis trouvera et chargera automatiquement un fichier XML par les pairs (dans ce cas, sur la base du nom de classe de la classe BlogMapper.class sous le chemin de la classe, alors blogmapper.xml sera chargé de configurer manuellement le chargement de XML).
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappeur public "- // Mybatis.org//dtd Mappeur 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapperpace =" Com.web.mapper.> <! " Résolvez le problème que le nom de la propriété du modèle est incompatible avec le nom de colonne de colonne dans la table de données JDBCTYPE doit être capitalisé -> <resultMap Type = "User" id = "usermap"> <id Property = "ID" Column = "id" Javatype = "int" JDBCTYPE = "INTERYTY JDBCTYPE = "VARCHAR" /> <Result Property = "Age" Column = "Age" Javatype = "int" JDBCTYPE = "INTEGER" /> </SUXTRAMMAP> <! - Notez le résultat ici. Si la propriété Column ==, vous pouvez retourner directement l'objet Java. Si le nom d'attribut est incompatible avec le nom de la colonne, la solution est la suivante: 1. Utilisez le résultat; 2. RETOUR HASHMAP; 3. Utilisez un alias pour l'instruction de requête -> <select id = "getuser" ParameterType = "int" resultMap = "usermap"> SELECT * FROM T_USER WHERE ID = # {id} </lect> <delete id = "DeleteUser" ParameterType = "INT"> DELELE ParameterType = "User"> Update T_User set username = # {name}, age = # {age} où id = # {id} </ update> <insert id = "insertuser" ParameterType = "User"> INSERT IN T_USER (Username, Age) Valeurs (# {name}, # {Age}) </sersert> colonne (nom d'utilisateur), donc le résultat utilise userMap -> <select id = "getUsers" resultMap = "userMap"> SELECT * FROM T_USER </ECLET> </ MAPTER> Inscrivez-vous sur mybatis.xml [lorsque vous êtes combiné avec Spring, ce fichier de configuration ne sera pas requis]
Fichier de configuration MyBatis
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <Properties Resource = "JDBC. <! - Configurer les alias de la classe d'entité -> <tyciases> <! - <tycias type = "com.web.model.user" alias = "user" /> -> <package name = "com.web.model" /> </pactaliases> <! - Development: Development Mode Work: work Mode -> <Environments default = "Development"> <Environment Id = "Development"> <transactionmaner Type = "JDBCCCC"> <Environment Id = "Development"> <transactionmaner Type = "JDBCCC"> <CIVIELL ID = "Development"> <fractionManA <dataSource type = "poolled"> <propriété name = "driver" value = "$ {driver}" /> <propriété name = "url" value = "$ {url}" /> <propriété name = "username" value = "$ {username}" /> <propriété name = "mot de passe" value = "$ {mot de passe}" /> </ datasource> Ressource = "com / web / mapper / userMapper.xml" /> <mapper ressource = "com / web / mapper / ordermapper.xml" /> <mappeur /> </mappers> </ configuration>Ici, nous utilisons le fichier XML pour obtenir le SQLSessionFactory et SQLSession.
public static sqlSessionFactory getFactory () {/ * Flow the src dir * / string Resource = "mybatis.xml"; / * mybatisUtils.class.getResourceAsStream (Resource) ---- c'est faux !!! * Veuillez distinguer les deux de haut en bas * * / inputStream inputStream = mybatisUtils.class.getClassLoader (). getResourceSstream (ressource); sqlSessionFactory Factory = new SqlSessionFactoryBuilder (). build (inputStream); return factory;} SQLSession Session = factory.preory Solutions: 1.Factory.opencession (true); 2.Session.commit (); * / / * utiliser sql xml non annotation * / @ @ test public void testAdd () {sqlSession session = mybatisUtils.getFactory (). OpenSession (); String Statement = "com.web.mapper.userper.Inserser"; / * RETOUR L'effet ROWS * / int insert = Session. commit * / session.commit (true); session.close (); System.out.println ("Effets Rows .." + INSERT);} @ test public void testSelect () {/ * Set Auto Commit, qui est égal à la session * / sqlSession Session = MybatisUtils.getFactory (). "com.web.mapper.usermapper.getuser"; / * renvoie les lignes d'effet * / user user = session.selectone (instruction, 3); System.out.println ("Effect Rows .." + User);} @ test public void TESTUPDATE () {SQLSession Session = MybatisUtils.getFactory (). "com.web.mapper.usermapper.updateUser"; / * renvoie les lignes d'effet * / int update = session.update (instruction, nouvel utilisateur (3, "tom4", 13)); System.out.println ("Effect Rows .." + Update); e} @ test public void testdelete (). "com.web.mapper.usermapper.deleteUser"; / * renvoie les lignes d'effet * / int delete = session.delete (instruction, 6); / * commit by yoursel * / session.commit (); system.out.println ("Effect Rows .." + Delete); session.close ();} @ test public Vend TestGetUser () {SQLSSession Session = Session = MybatisUtils.getFactory (). OpenSession (); String Statement = "com.web.mapper.usermapper.getUser"; / * return the list <user> * System <ser> users = session.selectList (instruction); session.commit (); system.out.println ("Effect Rows .." + Userst); session.close ();}.ParameterType et ResultType sont Hashmap:
<select id = "getuserFormap" ParameterType = "hashmap" resultType = "hashmap"> select * from c_user où id = # {id}; </lect> @Test public void getUserFormap () {SqlSession Session = MyBatisUtils.getFactory (). OpenSession (); String Statement = "com.web.mapper.usermapper.GetUserFormap"; Hashmap <String, Object> Map = new Hashmap <String, objet> (); Map.Put ("id", 1); / * Retourne l'effet Rows Rows * Session.SelectOne (instruction, map); / * Default n'est pas auto commit * / session.Commit (true); session.close (); System.out.println ("Effect Rows .." + SelectOne + ", class:" + selectOne.getClass ());} Effet Rows .. {id = 1, âge = 12, name = luli}, classe: classe java.util.hashmapPour résumer, on peut voir que MyBatis analyse et encapsulera automatiquement le type de paramètre et le type de résultat.
<sélectionnez id = "getListpage" ParameterType = "hashmap" resultMap = "SiteExTendDaoMap"> SELECT ID, site_id, site_name, site_number, province, ville, zone, adresse, interne_number, longitude, la latitude depuis tb_site --use dynamique sql <if <if préfixe = "où" prefixoverrides = "et | test = "CheckState! = null et Checkstate! = ''"> et check_state = # {checkState, jdbcType = Integer} </ if> <if test = "SiteID! = null et siteId! = ''"> et site_id comme concat ('%', # {siteId}, '%') </ if> <if Test = "kenename! = null}, '%') </ if> <if Test =" Sitnename! = Null » sitename! = '' "> et site_name like concat ('%', # {sitename}, '%') </ if> <if test =" siteNumber! = null et siteNumber! = '' "> et site_number like concat ('%', # {siteNumber}, '%') </ if> <if test =" province! = null and province! = '"> et site comme test =" province! = null et province! Concat ('%', # {siTenumber}, '%') </ if> <if test = "province! = null and province! = ''"> et province = # {province} </ if> <if test = "City! = Null et City! = ''"> et City = # {City} </ if> <if Test = "Area! = null et null! = ''" " </ if> </mim> --Add tri <if test = "sortName! = null et sortName! = '' et sortOrder! = null et sortOrder! = null et sortOrder! = ''"> ordre par $ {sortName} $ {sortOrder} </ if> --Add paging limitSi le paramètre est POJO, MyBatis obtiendra automatiquement l'ID de l'objet;
<delete id = "Delete" ParameterType = "User"> Delete de tb_user où id = # {id} </preaking> <delete id = "DeleteByid" ParameterType = "Long"> Delete de tb_user où id = # {id} </ delete> <delete id = "DeleteByids"> delete de tb_user où id dans --use foreach <foreach collection = "list" item = "id" open = "(" séparateur = "," close = ")"> # {id} </foreach> </preete>Généralement utilisé en conjonction avec GetListPage.
<select id = "getrows" ParameterType = "hashmap" resultType = "long"> SELECT COUNT (*) FROM TB_SYS_ROLE <if test = "keysysrole! = null"> <Trim Prefix = "WHERE" prefixoverrides = "et | ou"> <if test = "keysrole.id! = null"> et id = # {keysys.id oids! </ if> <if test = "keysysrole.name! = null et keyslysrole.name! = ''"> et name = # {keyslysrole.name} </ if> <if test = "keysysrole.available! = null et keysrole.available! = ''"> et disponible = # {keysysrole.available}! </ if> </lect>Ce qui précède est tout le contenu de cet article sur MyBatis utilisant XML pour l'analyse de code. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!