日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mybatis-增删改查模糊查询分页注解(普通类型参数、引用类型参数、Map类型参数)

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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功能,讓代碼看起來更簡潔,更容易修改。
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope></dependency>
  • 創建實體類User,其中注解@Data會幫我們自動生成類的setter、getter、toString方法
package com.changqing.pojo;import lombok.Data;//實體類,對應數據表User @Data public class User {private int id;private String name;private int age;public User(){}public User(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public User(String name, int age){this.name=name;this.age=age;}}

3、定義UserDao接口和UserMapper.xml映射文件

  • 定義UserDao接口,定義我們所需要的數據庫操作方法,增刪改查等等
package com.changqing.dao;import com.changqing.pojo.Student; import com.changqing.pojo.User;import java.util.List; import java.util.Map;public interface UserDao {//獲取所有數據public List<User> getUserList();//根據id查詢數據public Map<String, String> selectById(int id);//增加數據public void addUser(User user);//通過map來增加數據public void addUser2(Map<String, Object>map);//通過map來修改數據public void updateUser(Map<String, Object>map);//刪除數據public void deleteUser(int id);//批量刪除數據>idpublic void deleteBatch(int id);//模糊查詢public List<User> selectNameLike(String value);//分頁查詢public List<User> getLimitUser(Map<String, Object> map);//使用注解不使用參數來獲取Users, 不需要在xml寫sql語句,但是適用范圍很小@Select("select * from user")public List<User> getUsers();//測試注解,使用參數, 多個參數必須加上@Param, 僅有一個參數,可以加@Param也可以不加,但是規范寫法都應該加上@Select("select * from user where id=#{id} and name=#{name}")User getUser(@Param("id") int id, @Param("name") String name);}
  • 定義UserMapper.xml映射文件。這個文件的作用相當于UserDao接口的實現類作用。在JDBC中,我們需要定義接口然后實現接口,這里的UserMapper.xml文件相當于JDBC中的實現類。其中namespace對應UserDao的全限定名,即com.changqing.dao.UserDao。id對應UserDao中的方法名,ParameterType是方法參數類型,resultType對應返回的類型,這里就是User對象。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--這里的namesapce的值位UserDao,即將這個UserMapper配置文件綁定到UserDao接口上,相當于這個xml文件實現UserDao接口, 其中的id對應UserDao中的方法名--> <mapper namespace="com.changqing.dao.UserDao"><select id="getUserList" resultType="com.changqing.pojo.User">select * from User</select><select id="selectById" parameterType="int" resultType="hashmap">select * from User where id=#{id}</select><insert id="addUser" parameterType="com.changqing.pojo.User">insert into User(name, age) values(#{name}, #{age})</insert><insert id="addUser2" parameterType="map">insert into User(id, name, age) values (#{userid}, #{username}, #{userage})</insert><update id="updateUser" parameterType="map">update User set name=#{username}, age=#{userage} where id=#{userid}</update><delete id="deleteUser" parameterType="int">delete from User where id=#{id}</delete><delete id="deleteBatch" parameterType="int">delete from User where id>#{id}</delete><!--因為在myatis中建立別名 typeAliases,所以可以直接使用類名--><select id="selectNameLike" parameterType="String" resultType="User">select * from User where name like concat('%',#{0},'%')</select><!-- 分頁查詢--><select id="getLimitUser" parameterType="map" resultType="com.changqing.pojo.User">select * from User limit #{startIndex}, #{pageSize}</select></mapper>

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接口。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration><!--引用jdbc.properties文件,可以在下面直接應用jdbc.properties的值--><properties resource="jdbc.properties"/><typeAliases><package name="com.changqing.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!-- 不使用jdbc.properties配置文件,直接在mybatis配置文件里填入參數--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?userSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="199604"/><!-- 使用jdbc.properties配置文件--> <!-- <property name="driver" value="${driver}"/>--> <!-- <property name="url" value="${url}"/>--> <!-- <property name="username" value="${username}"/>--> <!-- <property name="password" value="${password}"/>--></dataSource></environment></environments><mappers><!--將UserMapper注冊到mybatis中,--><mapper resource="mapper/UserMapper.xml"/></mappers> </configuration>

(可選)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=199604

6、創建工具類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类型参数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。