MyBatis es un marco de capa de persistencia que admite consultas SQL ordinarias, procedimientos almacenados y mapeo avanzado.
MyBatis elimina la configuración manual de casi todos los códigos y parámetros JDBC y la encapsulación de búsqueda del conjunto de resultados.
MyBatis puede usar XML o anotaciones simples para la configuración y mapeo original, mapeo de interfaces y PoJo de Java (objetos Java antiguos) en los registros en la base de datos.
Cada aplicación mybatis toma una instancia del objeto SQLSessionFactory como el núcleo.
Se puede obtener una instancia del objeto SQLSessionFactory a través del objeto SQLSessionFactoryBuilder. El objeto SQLSessionFactoryBuilder se puede construir a través del archivo de configuración XML o desde la instancia de clase de configuración preparada en la gestión de uso anterior.
DataSource DataSource = BlogDataSourceFactory.getBlogDataSource (); TransActionFactory TransActionFactory = new JDBCtransActionFactory (); // Environmento ambiente entorno = Nuevo entorno ("Desarrollo", TransactionFactory, DataSource); Configuración de configuración = NUEVA CONFIGURACIÓN (entorno); // Mapper Class Configuration.Addmapper (BlogMapperer); Configuración de configuración = NUEVA CONFIGURACIÓN (entorno); // Mapper Class Configuración. sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (Configuración);Tenga en cuenta que en este caso la configuración es agregar la clase Mapper. Las clases de mapeadores son clases de Java, que contienen anotaciones de las declaraciones de mapeo SQL para evitar dependencias en archivos XML, pero aún se requiere la asignación XML en la mayoría de las asignaciones avanzadas (como la asignación de unión anidada).
Por esta razón, si existe un archivo de configuración XML, MyBatis encontrará automáticamente y cargará un archivo XML de par (en este caso, en función del nombre de clase de la clase BlogMapper.Class en la ruta de clase, entonces BlogMapper.xml se cargará eso, clase y XML están en el mismo directorio de archivos. Si no es así, debe configurar manualmente la carga de XML).
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtdd"><mapper namespace =" com.weber.mer.maper.weber.weber " < jdbctype = "varchar"/> <resultado propiedad = "edad" columna = "edad" javatype = "int" jdbctype = "entero"/> </resultadomap> <!- Tenga en cuenta el resultado aquí. If column == Propiedad, puede devolver directamente el objeto Java. Si el nombre del atributo es inconsistente con el nombre de la columna, la solución es la siguiente: 1. Use ResultMap; 2. Return hashmap; 3. Use el alias para la instrucción de consulta-> <select id = "getUser" parametertype = "int" resultmap = "usermap"> select * de t_user donde id =#{id} </select> <elelete id = "deleteuser" parametertype = "int"> delete de t_user donde id =#{id} </elelelelETE> <Apdate ID = "upline" upcate "upcinate" upcinate "," Único ". Actualizar t_user establecer username =#{name}, edad =#{age} donde id =#{id} </update> <insertar id = "insertuser" parametertype = "user"> insertar en t_user (username, age) valores (#{name},#{edad}) <//> <! id = "getUsers" resultMap = "usermap"> select * de t_user </select> </mapper> Regístrese en mybatis.xml [Cuando se combina con Spring, este archivo de configuración no será necesario]
Archivo de configuración mybatis
<? xml versión = "1.0" encoding = "utf-8"?> < Configurar alias de clase de entidad-> <typealiases> <!-<typealias type = "com.web.model.user" alias = "user"/>-> <paquete name = "com.web.model"/> </typealiases> <!-Desarrollo: desarrollo de desarrollo: modo de trabajo: modo de trabajo-> <entornos predeterminado = "desarrollo"> <dintorio id = "desarrollo"> <transacciones de transacción "type" <DataSource type = "Pooled"> <Property Name = "Driver" Value = "$ {Driver}" /> <Property name = "url" value = "$ {url}" /> <propiedad name = "username" value = "$ {username}" /> <name de propiedad = "contraseña" valor = "$ {contraseña}" /> < /datASOurce> < /entorno < /entorno < /entorno < /entorno < /entorno < /entorno < /entorno < /entorno < /entorno < /methilmentmentment. Resource = "com/web/mapper/usermapper.xml"/> <mapper resource = "com/web/mapper/ordenmapper.xml"/> <mapper/> </ mappers> </figuration>Aquí usamos el archivo XML para obtener SQLSessionFactory y SQLSession.
public static sqlSessionFactory getFactory () {/*fluir el src dir*/string recursce = "mybatis.xml";/*mybatisutils.class.getresourceasstream (recursos) ---- ¡está mal! * Distinga los dos hacia arriba y hacia abajo * */inputStream inputStream = mybatisutils.class.getClassLoader (). getResourceasstream (recursos); sqlsessionFactory factory = new SqlSessionFactoryBuilder (). Build (InputStream); return Factory;} Sqlsession Session = factory.opensession (verdadero); soluciones: 1.factory.opensession (verdadero); 2.session.commit (); */ /*use sql xml no anotación*/@prueba public void testAdd () {sqlsession session = myBatisUtils.getFactory (). OpenSession (); string Declaration = "com.web.mapper.usermapper commit*/session.commit (true); session.close (); system.out.println ("Effect Rows .."+Insert);}@Test public void testSelect () {/*set Auto Commit, que es igual a la sesión anterior*/sqlSession = myBatisutils.getFactory (). Opensession (true); String Declary = "com.web.mapper.usermapper.getuser";/*return the Effect Rows*/User User = session.selectone (instrucción, 3); system.out.println ("Effect Rows .."+user);}@prueba public void testUpdate () {sqlSession session = myBatisUtils.getFactory (). Opensession (verdadero); verdadero string state () "com.web.mapper.usermapper.updateuser";/*return the Effect Rows*/int update = session.update (instrucción, nuevo usuario (3, "Tom4", 13)); System.out.println ("Effect Rows .."+Update);}@testDelete () {sqlSession Session = mybatisutiliS. = "com.web.mapper.usermapper.deleteUser";/*return the Effect ROWS*/int delete = session.delete (instrucción, 6);/*Commit por usted mismo*/session.commit (); system.out.println ("Effect ROWS .."+Delete); Session.Close ();}@Test Public Void testgetusers () {sqlsession session = Mybatisutils.getFactory (). Opensession (); string statte = "com.web.mapper.usermapper.getusers";/*return the List <serer>*/list <serer> users = session.selectList (declaración); session.commit (); system.print.pintln ("Effect Rows .."+ussers); session.close ();}Parametertype y resultType son hashmap:
<select id = "getUserFormap" parametertype = "hashmap" dentType = "hashmap"> select * de c_user donde id =#{id}; </select> @Test public void getUserFormap () {sqlSession session = myBatisUtils.getFactory (). OpenSession (); string Declaration = "com.web.mapper.usermapper.getUserFormap"; hashmap <string, object> map = new HashMap <string, objeto> (); map. "id", 1);/*return the Effect Rows Rows session.selectone (instrucción, map);/*El valor predeterminado no es un comité automático*/session.commit (true); session.close (); system.out.println ("ranos de efecto ..."+selectone+", class:"+selectone.getClass ());} Efecto filas .. {id = 1, edad = 12, nombre = luli}, clase: clase java.util.hashmapEn resumen, se puede ver que MyBatis analizará y encapsulará automáticamente de acuerdo con el tipo de parámetro y el tipo de resultado.
<select id = "getListPage" parametertype = "hashmap" resultmap = "SiteExtendDaomap"> select id, sitio_id, sitio_name, sitio_number, provincia, ciudad, área, dirección, interna_number, longitude, latitud de tb_site --use dinámico sql <trim prefix = "where" prefixoverrides = "y | | 'o" null y checkState! = '' "> y check_state = #{checkState, jdbctype = integer} </if> <if test =" SiteId! = Null and SiteId! = '' '"> y Site_id Like Concat ('%', #{SiteId},'%') </if> <if test =" Sitename! = Sitename! = Sitename! concat ('%', #{Sitename}, '%') </if> <if test = "SitEnnumber! = Null and SitEnnumber! = '' '"> y Site_Number Like Concat ('%', #{SitEnumber},'%') </if> <if test = "Province! = Null! =' '" y Site_number como concat ('%', #{SitEnumber}, '%') </if> <if test = "Province! = Null and Province! = '' '"> y Province = #{Province} </if> <if test = "City! = Null and City! =' '"> y City = #{City} </if> <if test = "Area! = Null! =' '' '' '' 'y área = #» --Add sort <if test = "sortname! = Null and sortname! = '' Y sortorder! = Null and sortOrder! = Null and sortorder! = '' '"> Orden por $ {sortname} $ {sortorder} </if> --add Paging Limit $ {(Page-1)*PageSize}, $ {PageSize} </select>Si el parámetro es POJO, MyBatis obtendrá automáticamente la ID del objeto;
<Elelete id = "Eliminar" parametertype = "user"> Eliminar de tb_user donde id = #{id} </elelete> <deletete id = "deletyByid" parametertype = "long"> Eliminar de tb_user donde id = #{id} </elelEte> <delete id = "deletybyids"> Eliminar de tb_user donde id en --use foreach <foreach Collection = "list" item = "id" Open = "(" separator = "," Close = ")"> #{id} </boreach> </elEte>Generalmente se usa junto con GetListPage.
<select id = "getRows" parametertype = "hashmap" resultType = "long"> select Count (*) de tb_sys_role <if test = "KeySySrole! = Null"> <Trim prefix = "where" prefiXoverrides = "y | o"> <if test = "KeySySrole.id! = null"> e id = # #{ #{ #{KeySrole {. <if test = "keySySrole.name! = null and keySySrole.name! = '' '"> y name = #{keySySrole.name} </if> <if test = "keySySrole.available! = null y keySySrole.available! =' '' '' 'y disponible = #{keySRole.available ibeil </select>Lo anterior es todo el contenido de este artículo sobre MyBatis usando XML para el análisis de código. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!