Mybatis-增删改查模糊查询分页注解(普通类型参数、引用类型参数、Map类型参数)
生活随笔
收集整理的這篇文章主要介紹了
Mybatis-增删改查模糊查询分页注解(普通类型参数、引用类型参数、Map类型参数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼地址https://www.lanzouw.com/ihOmnwdtbrc
請先看項目目錄結構,然后再寫代碼。target是編譯后的輸出目錄,只需要保證src目錄目錄一致就行。
1、創建數據庫mybatis和表User,并插入數據
DROP DATABASE IF EXISTS mybatis; CREATE DATABASE mybatis; USE mybatis; CREATE TABLE User(id int(11) NOT NULL AUTO_INCREMENT,name VARCHAR(32) NOT NULL,age int(3),PRIMARY KEY (id))ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; USE mybatis; INSERT INTO User(name, age) VALUES ("張三", 12), ("李四", 14), ("王華", 10), ("lucy", 20), ("mary", 22);2、創建maven工程,創建實體類User
- 導入lombok、mysql驅動、mybatis、junit四個jar包。使用lombok注解可以幫我們自動實現setter和getter、toString功能,讓代碼看起來更簡潔,更容易修改。
- 創建實體類User,其中注解@Data會幫我們自動生成類的setter、getter、toString方法
3、定義UserDao接口和UserMapper.xml映射文件
- 定義UserDao接口,定義我們所需要的數據庫操作方法,增刪改查等等
- 定義UserMapper.xml映射文件。這個文件的作用相當于UserDao接口的實現類作用。在JDBC中,我們需要定義接口然后實現接口,這里的UserMapper.xml文件相當于JDBC中的實現類。其中namespace對應UserDao的全限定名,即com.changqing.dao.UserDao。id對應UserDao中的方法名,ParameterType是方法參數類型,resultType對應返回的類型,這里就是User對象。
4、定義Mybatis-config.xml主配置文件
- 這里的<properties reouse="jdbc.properties">是導入外部的數據源的xml,目的是將數據源信息和主配置文件解耦。Mybatis-config.xml使用<property name="***" value="***">來引入具體的配置參數。好處是如果以后需要修改數據源信息,只用在jdbc.propertis文件中修改,不需要修改Mybatis-config.xml文件。
- <typeAliases>可以使用別名,會自動導入所有com.changqing.pojo包下的所有類,并直接使用類名作為別名,這樣的好處使得UserMapper文件的resultType值可以直接使用非全限定名,不需要使用全限定名?。
- <mappers>標簽用于將UserMapper.xml注冊到Mybatis中,后續的代碼才能使用UserDao接口。
(可選)5、編寫jdbc的配置文件jdbc.properties
這樣的好處是將jdbc和mybatis配置文件解耦,修改jdbc連接信息只需要修改jdbc.properties文件即可。如果使用這個文件,請將上面的被注釋的<property>取消注釋。
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?userSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username=root password=1996046、創建工具類MybatisUtils來返回SqlSession
package com.changqing.utils;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try{String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}catch (Exception e){e.printStackTrace();}}public static SqlSession getSqlSession(){return sqlSessionFactory.openSession();} }7、編寫測試類進行測試
package test;import com.changqing.dao.UserDao; import com.changqing.pojo.Student; import com.changqing.pojo.User;import com.changqing.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.AfterClass; import org.junit.Test;import java.util.HashMap; import java.util.List; import java.util.Map;public class TestUser {private static final SqlSession sqlSession = MybatisUtils.getSqlSession();private static final UserDao userDao = sqlSession.getMapper(UserDao.class);//查找全部數據@Testpublic void testUser(){List<User> userList = userDao.getUserList();for(User user: userList){System.out.println(user);}}//按id查找@Testpublic void test2(){Map<String, String> user = userDao.selectById(1);System.out.println(user);}//添加數據,使用對象來傳入參數@Testpublic void addUser(){User user = new User("張明",23);userDao.addUser(user);sqlSession.commit();}//添加數據,使用map傳入多個參數@Testpublic void addUser2(){Map<String, Object> map = new HashMap<>();map.put("userid", 12);map.put("username", "李明");map.put("userage", 25);userDao.addUser2(map);sqlSession.commit();}//更新數據@Testpublic void updateUser(){Map<String, Object> map = new HashMap<>();map.put("userid", 7);map.put("username", "nancy");map.put("userage", 34);userDao.updateUser(map);sqlSession.commit();}//刪除指定id的數據@Testpublic void deleteUser(){userDao.deleteUser(18);sqlSession.commit();}@Test//批量刪除數據,刪除>id的數據public void deleteBatch(){userDao.deleteBatch(5);sqlSession.commit();}//根據姓名進行模糊查詢@Testpublic void selectNameLike(){List<User> userList = userDao.selectNameLike("張");for(User user: userList){System.out.println(user);}}//測試分頁查詢@Testpublic void getLimitUser(){Map<String, Object> map = new HashMap<>();map.put("startIndex", 2); ///索引是從0開始計算的, 會從索引為startIndex的數據開始返回,返回pageSize個數據, 即會從第startIndex+1數開始返回map.put("pageSize", 2);List<User> userList = userMapper.getLimitUser(map);for(User user: userList){System.out.println(user);}}//測試mybatis注解功能,只能實現簡單功能,而且必須保證數據庫的列名和實體類User的屬性名一致才可以用,局限性比較大@Testpublic void testAnnotation(){List<User> userList = userMapper.getUsers();for(User user: userList){System.out.println(user);}}//測試注解,使用參數@Testpublic void testAnnotationWithArgs(){User user = userMapper.getUser(1, "張三");System.out.println(user);}//在上面每個方法執行后,都會默認執行這個方法來關閉sqlSession@AfterClasspublic static void closeSql(){//查詢System.out.println(".......................................");List<User> userList = userDao.getUserList();for(User user: userList){System.out.println(user);}sqlSession.close();} }總結
以上是生活随笔為你收集整理的Mybatis-增删改查模糊查询分页注解(普通类型参数、引用类型参数、Map类型参数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis-入门
- 下一篇: Pytorch和Numpy的默认类型