1. Consulta
Además de la consulta de un solo disco, aquí intentamos consultar un conjunto de registros.
Agregue el siguiente método a la interfaz IUSermapper:
Lista <serem> getUsers (nombre de cadena);
Agregar en user.xml:
<resultmap type = "user" id = "userList"> <!-type es el nombre completo o alias de la clase que devuelve el elemento de lista-> <id columna = "id" propiedad = "id" /> <resultado columna = "name" propiedad = "name" /> <resultado columna = "age" name Id = "Age" Age " /> <Result Column =" Dirección "Dirección =" Dirección " /> < /ResultMap> resultMap = "UserList"> <!-ResultMap es la lista de usuarios definida anteriormente-> Seleccionar * de `User` donde Name Like #{name} </select>Método de prueba:
@Test public void QueryListTest () {sqlsession session = sqlsessionFactory.opensession (); Pruebe {iusermapper mapper = session.getMapper (iusermapper.class); Lista <serem> users = mapper.getusers ("%a%"); // % representa cualquier personaje en SQL. for (usuario de usuario: usuarios) {log.info ("{}: {}", user.getName (), user.getAddress ()); }} finalmente {session.close (); }} Si se devuelve la consulta de la tabla de conjunción, el objeto compuesto debe procesarse con la palabra clave de asociación.
Si el usuario publica un artículo, cada usuario puede publicar múltiples artículos y tienen una relación de uno a muchos.
(1) Cree una tabla de artículos e inserte los datos de prueba:
- Deje caer la tabla si existe la tabla de caída si existe `Artículo`; - Cree una tabla llamada 'Artículo' Crear tabla `Artículo` (` ID` int no nulo Auto_incement, `user_id` int no nulo,` title` varchar (100) no nulo, `contenido 'texto no nulo, key primario (` id`)) motor = innoDB Auto_incement = 1 Charset predeterminado = utf8; - Agregue varios registros de prueba Insertar en valores de `Artículo` ('1', '1', 'Title1', 'Content1'), ('2', '1' ',' Title2 ',' Content2 '), (' 3 ',' 1 ',' Title3 ',' Content3 '), (' 4 ',' 1 ',' Title4 ',' Content4 ');(2) com.john.hbatis.model.article clase:
Artículo de clase pública {private int id; Usuario privado de usuario; título de cadena privada; Contenido de cadena privada; // Getters y Setters se omiten}(3) Agregue iusermapper:
Lista <artículo> getArticlesbyUserId (int id);
(4) Agregue user.xml:
<resultmap type = "com.john.hbatis.model.article" id = "articLelist"> <id columna = "a_id" propiedad = "id" /> <resultado columna = "title" propiedad = "title" /> <resultado columna = "contenido =" contenido " /> <propiedad de asociación =" user "javatype =" user "> <!-Mapas de usuario de usuario a la clase de usuarios a la clase de los usuarios a la clase de contenido-CLOUNTA-COLUNTA ID" ID "ID" Propiedad = "id" /> <resultado columna = "name" propiedad = "name" /> <resultado columna = "dirección" propiedad = "dirección" /> </socation> < /resultadomap> <select id = "getArticlesByUserID" ParametType = "int" resultmap = "ArticLeList"> seleccionar U.id, u.name, u.age, u.address, a.id a_id, a.title, a a.content A. Únase al usuario u en a.user_id = u.id y u.id =#{id} </select>(5) Método de prueba:
@Test public void getArTiclesByUserIdTest () {sqlsession session = sqlsessionFactory.opensession (); Pruebe {iusermapper mapper = session.getMapper (iusermapper.class); Lista <artículo> artículos = mapper.getArticlesbyUserId (1); para (artículo Artículo: Artículos) {Log.info ("{} - {}, autor: {}", artículo.gettitle (), artículo.getContent (), artículo.getuser (). getName ()); }} finalmente {session.close (); }} Adjunto:
Además de definir la asignación de campos y atributos dentro de la etiqueta de asociación, también puede reutilizar el resultado de resultados del usuario:
<Propiedad de asociación = "user" javatype = "user" resultmap = "userList" />
2. Agregado
Agregue el siguiente método a la interfaz IUSermapper:
int adduser (usuario de usuario);
User.xml Agregar:
<inserto id = "adduser" parametertype = "user" useGeneratedKeys = "true" keyproperty = "id"> <!- UseGeneratedKeys especifica la clave principal de que MyBatis usa la base de datos para generar y poblar automáticamente en las propiedades especificadas por KeyProperty. Si no se especifica, el objeto de retorno no puede obtener el valor generado -> Insertar en los valores del usuario (nombre, edad, dirección) (#{name},#{age},#{dirección}) </sert>Método de prueba:
@Test public void addUsertest () {user user = new User ("Lucy", 102, "Happy District"); Sqlsession session = sqlSessionFactory.opensession (); Pruebe {iusermapper mapper = session.getMapper (iusermapper.class); int afectado = mapper.adduser (usuario); session.commit (); // El valor predeterminado no se envía automáticamente. Llamar session.getConnection (). GetAutOcommit () para ver log.info ("{} Se insertó un nuevo registro con éxito cuya id: {}", afectada, user.getID ()); } finalmente {session.close (); }}3. Actualizar
Método de adición de interfaz:
int updateUser (usuario de usuario);
User.xml Agregar:
<update id = "updateUser" parametertype = "user"> Update `user` set name =#{name}, age =#{age}, dirección =#{dirección} donde id =#{id} </update>Método de prueba:
@Test public void updateUsertest () {sqlsession session = sqlsessionFactory.opensession (); Pruebe {iusermapper mapper = session.getMapper (iusermapper.class); Usuario user = mapper.getuserById (8); user.setaddress ("Distrito satisfecho"); int afectado = mapper.updateuser (usuario); // Además de los atributos que se modificarán, también se deben asignar otros atributos del usuario, de lo contrario, estos atributos serán actualizados por la base de datos al valor inicial (nulo o 0, etc.). Primero puede consultarlo, pero esto aumentará la interacción innecesaria con la base de datos. Las siguientes condiciones pueden evitar este problema. log.info ("Conteo afectado: {}", afectado); session.commit (); } finalmente {session.close (); }}4. Eliminar
Método de adición de interfaz:
int deleteUser (int id);
User.xml Agregar:
<Elelete id = "deleteuser" parametertype = "int"> Eliminar de `user` donde id =#{id} </elete>Método de prueba:
@Test public void DeleteUsertest () {sqlsession session = sqlSessionFactory.opensession (); Pruebe {iusermapper mapper = session.getMapper (iusermapper.class); int afectado = mapper.deleteUser (8); log.info ("Conteo afectado: {}", afectado); session.commit (); } finalmente {session.close (); }}