1. Запрос
В дополнение к запросу одной записи, здесь мы пытаемся запросить набор записей.
Добавьте следующий метод в интерфейс iusermapper:
Список <user> getUsers (string name);
Добавьте us in user.xml:
<resultMap type="User" id="userList"><!-- type is the full name or alias of the class that returns the list element--> <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> <result column="address" property="address" /> </resultMap> <select id="getUsers" parameterType="string" resultMap = "userList"> <!-ResultMap-это список пользователей, определенный выше-> SELECT * из `user`, где имя как #{name} </select>Метод испытаний:
@Test public void QueryListtest () {sqlSession session = sqlSessionFactory.opensession (); try {iusermapper mapper = session.getmapper (iusermapper.class); Список <user> users = mapper.getusers ("%a%"); // % представляет любой символ в SQL. for (пользователь пользователя: users) {log.info ("{}: {}", user.getName (), user.getAddress ()); }} наконец {session.close (); }} Если запрос таблицы соединения возвращается, составной объект должен быть обработан с помощью ключевого слова ассоциации.
Если пользователь публикует статью, каждый пользователь может публиковать несколько статей, и у него есть отношения от одного ко многим.
(1) Создайте таблицу статьи и вставьте тестовые данные:
- Отбросьте таблицу, если существует таблица, если существует `article`; - Создать таблицу с именем «Статья» Создать таблицу `article` (` id` int not null auto_increment, `user_id` int int null,` title` varchar (100) не null, `content` text, а не null, первичный ключ (` id`)) Engine = innodb auto_increment = 1 charset = utf8; - Добавить несколько тестовых записей вставки в значения «статья» ('1', '1', 'title1', 'content1'), ('2', '1', 'title2', 'content2'), ('3', '1', 'title3', 'content3'), ('4', '1' title4 ',' content4 ');(2) com.john.hbatis.model.article Class:
статья открытого класса {Private Int ID; частный пользователь; Приватная строка название; частный строковый контент; // Getters и Setters опущены}(3) Добавить в iusermapper:
Список <статья> getarticlicsbyuserid (int id);
(4) Добавить в user.xml:
<resultMap type="com.john.hbatis.model.Article" id="articleList"> <id column="a_id" property="id" /> <result column="title" property="title" /> <result column="content" property="content" /> <association property="user" javaType="User"><!-- user attribute maps to User class--> <id column="id" Property = "id" /> <result column = "name" Property = "name" /> <result column = "addrest" property = "address" /> < /association> < /resultmap> <select id = "getarticlicsbyuserid" parametertype = "int" resultmap = "articlelist"> select u.content, a.content, a. Внутреннее соединение пользователя u on a.user_id = u.id и u.id =#{id} </select>(5) Метод испытаний:
@Test public void getarticlicsbyuseridtest () {sqlSession session = sqlSessionFactory.opensession (); try {iusermapper mapper = session.getmapper (iusermapper.class); Список <статья> studts = mapper.getarticlicsbyuserid (1); для (статья статьи: статьи) {log.info ("{} - {}, автор: {}", article.getTitle (), article.getContent (), article.getUser (). getName ()); }} наконец {session.close (); }} Прикрепил:
В дополнение к определению отображения полей и атрибутов в тег Ассоциации, вы также можете повторно использовать результат пользователя:
<association property = "user" javatype = "user" resultmap = "userlist" />
2. добавлено
Добавьте следующий метод в интерфейс iusermapper:
int adduser (пользователь пользователя);
User.xml добавить:
<insert id = "AddUser" parameterType = "user" usegeneratedkeys = "true" keyproperty = "id"> <!- useGeneratedKeys Указывает первичный ключ, который MyBatis использует базу данных для автоматического генерации и заполнения ее на свойствах, указанных KeyProperty. Если не указано, объект возврата не может получить сгенерированное значение -> вставить в пользовательский (имя, возраст, адрес) значения (#{name},#{Age},#{Adder}) </insert>Метод испытаний:
@Test public void addUserTest () {user user = новый пользователь ("Люси", 102, "Happy District"); SQLSession Session = SQLSessionFactory.Opensession (); try {iusermapper mapper = session.getmapper (iusermapper.class); int intectCount = mapper.adduser (пользователь); session.commit (); // по умолчанию не представлено автоматически. Call Session.getConnection (). Getautocommit () для просмотра log.info ("{} Новая запись была успешно вставлена, чья идентификатор: {}", recateCount, user.getId ()); } наконец {session.close (); }}3. Обновление
Метод добавления интерфейса:
int updateUser (пользователь пользователя);
User.xml добавить:
<Update id = "updateUser" parameterType = "user"> update `user` set name =#{name}, age =#{age}, address =#{address} где id =#{id} </update>Метод испытаний:
@Test public void updateUserTest () {sqlSession session = sqlSessionFactory.opensession (); try {iusermapper mapper = session.getmapper (iusermapper.class); User user = mapper.getuserbyid (8); user.setAddress («удовлетворенный район»); int intecualCount = mapper.updateUser (пользователь); // В дополнение к изменению атрибутов также необходимо назначить другие атрибуты пользователя, в противном случае эти атрибуты будут обновлены базой данных до начального значения (NULL или 0 и т. Д.). Сначала вы можете запросить его, но это увеличит ненужное взаимодействие с базой данных. Следующие условия могут избежать этой проблемы. log.info ("Затронутый счет: {}", recateCount); session.commit (); } наконец {session.close (); }}4. Удалить
Метод добавления интерфейса:
int deleteUser (int id);
User.xml добавить:
<delete id = "deleteUser" parametertype = "int"> delete из `user`, где id =#{id} </delete>Метод испытаний:
@Test public void deleteUserTest () {sqlSession session = sqlSessionFactory.opensession (); try {iusermapper mapper = session.getmapper (iusermapper.class); int infledCount = mapper.deleteUser (8); log.info ("Затронутый счет: {}", recateCount); session.commit (); } наконец {session.close (); }}