Java?MyBatis傳出參數(shù)resultType和resultMap解讀
MyBatis輸出參數(shù) resultType 和 resultMap
我們需要在 mybatis-config.xml 文件中加如下配置
<!--定義別名--> ? ? <typeAliases> ? ? ? ? <!-- ? ? ? ? ? ? 第一種方式: ? ? ? ? ? ? 指定一個(gè)類(lèi)型一個(gè)自定義別名 ? ? ? ? ? ? type:自定義類(lèi)型的全限定名稱(chēng) ? ? ? ? ? ? alias:別名 ? ? ? ? --> ? ? ? ? <typeAlias type="com.mycompany.domain.User" alias="user" /> ? ? ? ? <typeAlias type="com.mycompany.vo.ViewUser" alias="vUser" /> ? ? ? ? ? <!-- ? ? ? ? ? 第二種方式 ? ? ? ? ? <package> name是包名, 這個(gè)包中的所有類(lèi),類(lèi)名就是別名(類(lèi)名不區(qū)分大小寫(xiě)) ? ? ? ? --> ? ? ? ? <package name="com.mycompany.domain" /> ? ? ? ? <package name="com.mycompany.vo" /> ? ? ? </typeAliases>
文件完全內(nèi)容如下
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration ? ? ? ? PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ? ? ? ? "http://mybatis.org/dtd/mybatis-3-config.dtd"> ? <!-- ? ? mybatis的主配置文件:主要定義了數(shù)據(jù)庫(kù)的配置信息,SQL映射文件的位置 ? ? 1、約束文件 ? ? ? ? <!DOCTYPE configuration ? ? ? ? ? ? PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ? ? ? ? ? ? "http://mybatis.org/dtd/mybatis-3-config.dtd"> ? ? ? ? mybatis-3-config.dtd:約束文件名稱(chēng) ? ? 2、configuration:根標(biāo)簽 --> <configuration> ? ? ? <!-- settings:mybatis全局行為 --> ? ? <settings> ? ? ? ? <!-- 設(shè)置mybatis輸出日志 --> ? ? ? ? <setting name="logImpl" value="STDOUT_LOGGING" /> ? ? </settings> ? ? ? <!--定義別名--> ? ? <typeAliases> ? ? ? ? <!-- ? ? ? ? ? ? 第一種方式: ? ? ? ? ? ? 指定一個(gè)類(lèi)型一個(gè)自定義別名 ? ? ? ? ? ? type:自定義類(lèi)型的全限定名稱(chēng) ? ? ? ? ? ? alias:別名 ? ? ? ? --> ? ? ? ? <typeAlias type="com.mycompany.domain.User" alias="user" /> ? ? ? ? <typeAlias type="com.mycompany.vo.ViewUser" alias="vUser" /> ? ? ? ? ? <!-- ? ? ? ? ? 第二種方式 ? ? ? ? ? <package> name是包名, 這個(gè)包中的所有類(lèi),類(lèi)名就是別名(類(lèi)名不區(qū)分大小寫(xiě)) ? ? ? ? --> ? ? ? ? <package name="com.mycompany.domain" /> ? ? ? ? <package name="com.mycompany.vo" /> ? ? ? </typeAliases> ? ? ? <!-- ? ? ? ? 環(huán)境配置:數(shù)據(jù)庫(kù)的連接信息 ? ? ? ? ? ? default:必須和某個(gè)environment的id值一樣 ? ? ? ? ? ? 告訴mybatis使用哪個(gè)數(shù)據(jù)庫(kù)的連接信息(訪(fǎng)問(wèn)哪個(gè)數(shù)據(jù)庫(kù)) ? ? --> ? ? <environments default="development"> ? ? ? ? ? <!-- ? ? ? ? ? ? environment:一個(gè)數(shù)據(jù)庫(kù)的配置,環(huán)境 ? ? ? ? ? ? id:一個(gè)唯一值(可自定義,表示環(huán)境的名稱(chēng)) ? ? ? ? ?--> ? ? ? ? <environment id="development"> ? ? ? ? ? ? <!-- ? ? ? ? ? ? ? ? transactionManaer:mybatis的事務(wù)類(lèi)型 ? ? ? ? ? ? ? ? ? ? type:JDBC(表示使用JDBC中的Connection對(duì)象的commit,rollback做事務(wù)處理) ? ? ? ? ? ? --> ? ? ? ? ? ? <transactionManager type="JDBC"/> ? ? ? ? ? ? <!-- ? ? ? ? ? ? ? ? dataSource:表示數(shù)據(jù)源,連接數(shù)據(jù)庫(kù)的 ? ? ? ? ? ? ? ? ? ? type:表述數(shù)據(jù)源的類(lèi)型,POOLED表示使用連接池 ? ? ? ? ? ? --> ? ? ? ? ? ? <dataSource type="POOLED"> ? ? ? ? ? ? ? ? <!-- ? ? ? ? ? ? ? ? ? ?driver, user, username, password 是固定的,不能自定義。 ? ? ? ? ? ? ? ? --> ? ? ? ? ? ? ? ? <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng)類(lèi)名 --> ? ? ? ? ? ? ? ? <property name="driver" value="com.mysql.jdbc.Driver"/> ? ? ? ? ? ? ? ? <!-- 連接數(shù)據(jù)庫(kù)的URL字符串 --> ? ? ? ? ? ? ? ? <property name="url" value="jdbc:mysql://localhost:3306/ssm"/> ? ? ? ? ? ? ? ? <!-- 訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的用戶(hù)名 --> ? ? ? ? ? ? ? ? <property name="username" value="root"/> ? ? ? ? ? ? ? ? <!-- 訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的密碼 --> ? ? ? ? ? ? ? ? <property name="password" value="123456"/> ? ? ? ? ? ? </dataSource> ? ? ? ? </environment> ? ? ? ? ? <!--表示線(xiàn)上的數(shù)據(jù)庫(kù),是項(xiàng)目真實(shí)使用的庫(kù)--> ? ? ? ? <environment id="online"> ? ? ? ? ? ? <transactionManager type="JDBC"/> ? ? ? ? ? ? <dataSource type="POOLED"> ? ? ? ? ? ? ? ? <property name="driver" value="com.mysql.jdbc.Driver"/> ? ? ? ? ? ? ? ? <property name="url" value="jdbc:mysql://localhost:3306/onlinedb"/> ? ? ? ? ? ? ? ? <property name="username" value="root"/> ? ? ? ? ? ? ? ? <property name="password" value="123456"/> ? ? ? ? ? ? </dataSource> ? ? ? ? </environment> ? ? ? </environments> ? ? ? <!-- sql mapper(SQL映射文件)的位置 --> ? ? <mappers> ? ? ? ? <!-- ? ? ? ? ? ? 一個(gè)mapper標(biāo)簽指定一個(gè)文件的位置 ? ? ? ? ? ? ? ? 從類(lèi)路徑開(kāi)始的路徑信息(target/classes)類(lèi)路徑 ? ? ? ? --> ? ? ? ? <mapper resource="com/mycompany/dao/UserDao.xml"/> ? ? </mappers> </configuration>
一、resultType
執(zhí)行 sql 得到 ResultSet 轉(zhuǎn)換的類(lèi)型,使用類(lèi)型的完全限定名或別名
1、簡(jiǎn)單類(lèi)型
UserDao接口文件
public User selectUserByUserId(@Param("userId") Integer id);
?
List<User> selectMultiParam(@Param("username") String userName,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @Param("userage") Integer age);UserDao.xml文件
<!--
? ? resultType:
? ? ? ? ? ? 表示結(jié)果類(lèi)型,SQL語(yǔ)句執(zhí)行后得到ResultSet結(jié)果集,遍歷這個(gè)結(jié)果集得到的Java對(duì)象類(lèi)型
? ? ? ? ? ? 值寫(xiě)Java對(duì)象的全限定名稱(chēng)
? ? 1、resultType="vUser"
? ? ? ? mybatis-config.xml文件中第一種方式
? ? ? ? 指定一個(gè)類(lèi)型一個(gè)自定義別名
? ? ? ? ? ? type:自定義類(lèi)型的全限定名稱(chēng)
? ? ? ? ? ? alias:別名
? ? 2、resultType="ViewUser"
? ? ? ? mybatis-config.xml文件中第二種方式:
? ? ? ? ? <package> name是包名, 這個(gè)包中的所有類(lèi),類(lèi)名就是別名(類(lèi)名不區(qū)分大小寫(xiě))
? ? 注:
? ? ? ? resultType="User" 如果一個(gè)項(xiàng)目中有多個(gè)User類(lèi)文件,會(huì)報(bào)錯(cuò)
? ? ? ? Could not resolve type alias 'User'. ?Cause: java.lang.ClassNotFoundException: Cannot find class: User
? ? -->
? ? <select id="selectUserByUserId" resultType="User">
? ? ? ? select user_id,user_name,email,age
? ? ? ? from user
? ? ? ? where user_id = #{userId}
? ? </select>
?
? ? <!--多個(gè)參數(shù),使用@Param命名-->
? ? <select id="selectMultiParam" resultType="com.mycompany.domain.User" >
? ? ? ? select user_id,user_name,email,age
? ? ? ? from user
? ? ? ? where user_name = #{username} or age = #{userage}
? ? </select>TestMyBatis測(cè)試類(lèi)
@Test
? ? public void testSelectUserByUserId(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? User user = userDao.selectUserByUserId(1);
? ? ? ? ? ? System.out.println("user="+user);
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
?
? ? @Test
? ? public void testSelectMultiParam(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? List<User> userList = userDao.selectMultiParam("zhangsan",20);
? ? ? ? ? ? for(User user: userList){
? ? ? ? ? ? ? ? System.out.println("用戶(hù)="+user);
? ? ? ? ? ? }
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }2、Map類(lèi)型
UserDao接口文件
//定義方法返回Map
? ? Map<Object,Object> selectMapById(Integer id);
UserDao.xml文件
<select id="selectMapById" resultType="java.util.HashMap">
? ? ? ? select user_id,user_name,email,age
? ? ? ? from user
? ? ? ? where user_id=#{userId}
? ? </select>TestMyBatis測(cè)試類(lèi)
@Test
? ? public void testSelectMapById(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? Map<Object,Object> map = userDao.selectMapById(1);
? ? ? ? ? ? System.out.println("map=="+map);
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }3、對(duì)象類(lèi)型
UserDao接口文件
ViewUser selectUserReturnViewUser(@Param("userId") Integer id);UserDao.xml文件
<!--
? ? ? ? 1、resultType="vUser"
? ? ? ? mybatis-config.xml文件中第一種方式
? ? ? ? 指定一個(gè)類(lèi)型一個(gè)自定義別名
? ? ? ? ? ? type:自定義類(lèi)型的全限定名稱(chēng)
? ? ? ? ? ? alias:別名
? ? ? ? 2、resultType="ViewUser"
? ? ? ? mybatis-config.xml文件中第二種方式:
? ? ? ? ? <package> name是包名, 這個(gè)包中的所有類(lèi),類(lèi)名就是別名(類(lèi)名不區(qū)分大小寫(xiě))
? ? -->
? ? <select id="selectUserReturnViewUser" resultType="ViewUser">
? ? ? ? select user_id,user_name
? ? ? ? from user
? ? ? ? where user_id = #{userId}
? ? </select>TestMyBatis測(cè)試類(lèi)
@Test
? ? public void testSelectUserReturnViewUser(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? ViewUser user = userDao.selectUserReturnViewUser(1);
? ? ? ? ? ? System.out.println("ViewUser="+user);
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }注:
(1)如果返回的是集合,那應(yīng)該設(shè)置為集合包含的類(lèi)型,而不是集合本身
(2)resultType 和 resultMap,不能同時(shí)使用
(3)resultType="User" 如果一個(gè)項(xiàng)目中有多個(gè)User類(lèi)文件,會(huì)報(bào)錯(cuò)
Could not resolve type alias 'User'. Cause: java.lang.
ClassNotFoundException: Cannot find class: User
此時(shí)最好指定全限定名稱(chēng)
二、resultMap
resultMap 可以自定義 sql 的結(jié)果和 java 對(duì)象屬性的映射關(guān)系;更靈活的把列值賦值給指定屬性
常用在列名和 java 對(duì)象屬性名不一樣的情況
使用方式:
(1)先定義 resultMap,指定列名和屬性的對(duì)應(yīng)關(guān)系
(2)在<select>中把 resultType 替換為 resultMap
列名和Java對(duì)象屬性名不一樣時(shí),有兩種處理方式
(1)使用resultMap映射
(2)resultType的默認(rèn)原則是 同名的列值賦值給同名的屬性, 使用列別名(java對(duì)象的屬性名)
如下Java類(lèi)屬性
public class User {
? ? private int userId;
? ? private String userName;
? ? private String email;
? ? private int age;
}
?
?
public class MyUser {
? ? private int myUserId;
? ? private String myUserName;
? ? private String myUserEmail;
? ? private int myUserAge;
}UserDao接口文件
/* ? ? ?使用resultMap定義映射關(guān)系 ? ? */ ? ? List<User> selectAllUsers(); ? ? ? List<MyUser> selectMyUser(); ? ? ? List<MyUser> selectDiffColProperty();
UserDao.xml文件
<!--使用resultMap
? ? ? ? (1)先定義resultMap
? ? ? ? (2)在select標(biāo)簽,使用resultMap來(lái)引用定義
? ? ? ? id:自定義名稱(chēng),表示定義的這個(gè)resultMap
? ? ? ? type:java類(lèi)型的全限定名稱(chēng)
? ? -->
? ? <resultMap id="userMap" type="com.mycompany.domain.User">
? ? ? ? <!--列名和java屬性的關(guān)系
? ? ? ? ? ? 注解列,使用id標(biāo)簽
? ? ? ? ? ? column :列名(數(shù)據(jù)庫(kù)表字段列名)
? ? ? ? ? ? property:java類(lèi)型的屬性名
? ? ? ? -->
? ? ? ? <!-- 主鍵列使用 id 標(biāo)簽-->
? ? ? ? <id column="user_id" property="userId" />
? ? ? ? <!-- 非主鍵列使用 result 標(biāo)簽-->
? ? ? ? <result column="user_name" property="userName" />
? ? ? ? <result column="email" property="email" />
? ? ? ? <result column="age" property="age" />
? ? </resultMap>
?
? ? <select id="selectAllUsers" resultMap="userMap">
? ? ? ? select user_id,user_name,email,age
? ? ? ? from user
? ? ? ? where user_id=#{userId}
? ? </select>
?
? ? <resultMap id="myUserMap" type="com.mycompany.domain.MyUser">
? ? ? ? <id column="user_id" property="myUserId" />
? ? ? ? <result column="user_name" property="myUserName" />
? ? ? ? <result column="email" property="myUserEmail" />
? ? ? ? <result column="age" property="myUserAge" />
? ? </resultMap>
?
? ? <!--列名和屬性名不一樣:第一種方式
? ? ? ? 使用resultMap映射
? ? -->
? ? <select id="selectMyUser" resultMap="myUserMap">
? ? ? ? select user_id,user_name,email,age
? ? ? ? from user
? ? </select>
?
? ? <!--列名和屬性名不一樣:第二種方式
? ? ? ?resultType的默認(rèn)原則是 同名的列值賦值給同名的屬性, 使用列別名(java對(duì)象的屬性名)
? ? -->
? ? <select id="selectDiffColProperty" resultType="com.mycompany.domain.MyUser">
? ? ? ? select user_id as myUserId ,user_name as myUserName, email as myUserEmail , age myUserAge
? ? ? ? from user
? ? </select>TestMyBatis測(cè)試類(lèi)
@Test
? ? public void testSelectAllUsers(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? List<User> userList = userDao.selectAllUsers();
? ? ? ? ? ? for(User user: userList){
? ? ? ? ? ? ? ? System.out.println("用戶(hù)="+user);
? ? ? ? ? ? }
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
?
? ? @Test
? ? public void testSelectMyUser(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? List<MyUser> userList = userDao.selectMyUser();
? ? ? ? ? ? for(MyUser user: userList){
? ? ? ? ? ? ? ? System.out.println("MyUser用戶(hù)="+user);
? ? ? ? ? ? }
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
?
? ? @Test
? ? public void testSelectDiffColProperty(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? List<MyUser> userList = userDao.selectDiffColProperty();
? ? ? ? ? ? for(MyUser user: userList){
? ? ? ? ? ? ? ? System.out.println("MyUser用戶(hù)="+user);
? ? ? ? ? ? }
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }三、模糊 like
模糊查詢(xún)的實(shí)現(xiàn)有兩種方式, 一是 java 代碼中給查詢(xún)數(shù)據(jù)加上“%” ; 二是在 mapper 文件 sql 語(yǔ)句的條件位置加上“%”
UserDao接口文件
/*第一種模糊查詢(xún), 在java代碼指定 like的內(nèi)容*/ ? ? List<User> selectLikeOne(String name); ? ? ? /*name就是李值, 在mapper中拼接 like ?"%" li "%" */ ? ? List<User> selectLikeTwo(String name);
UserDao.xml文件
<!--第一種 like ,java代碼指定 like的內(nèi)容-->
? ? <select id="selectLikeOne" resultType="com.mycompany.domain.User">
? ? ? ? select user_id, user_name, email, age
? ? ? ? from user
? ? ? ? where user_name like #{user_name}
? ? </select>
?
? ? <!--第二種方式:在mapper文件中拼接 like的內(nèi)容-->
? ? <select id="selectLikeTwo" resultType="com.mycompany.domain.User">
? ? ? ? select user_id, user_name, email, age
? ? ? ? from user
? ? ? ? where user_name like "%" #{user_name} "%"
? ? </select>TestMyBatis測(cè)試類(lèi)
?@Test
? ? public void testSelectLikeOne(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? //like的內(nèi)容
? ? ? ? ? ? String name = "%li%";
? ? ? ? ? ? List<User> userList = userDao.selectLikeOne(name);
? ? ? ? ? ? for(User user: userList){
? ? ? ? ? ? ? ? System.out.println("User用戶(hù)="+user);
? ? ? ? ? ? }
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
?
? ? @Test
? ? public void testSelectLikeTwo(){
? ? ? ? try {
? ? ? ? ? ? SqlSession sqlSession = MyBatisUtil.getSqlSession();
? ? ? ? ? ? UserDao userDao = sqlSession.getMapper(UserDao.class);
?
? ? ? ? ? ? //like的內(nèi)容
? ? ? ? ? ? String name = "li";
? ? ? ? ? ? List<User> userList = userDao.selectLikeTwo(name);
? ? ? ? ? ? for(User user: userList){
? ? ? ? ? ? ? ? System.out.println("User用戶(hù)="+user);
? ? ? ? ? ? }
? ? ? ? ? ? sqlSession.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot 實(shí)現(xiàn)配置文件加解密原理
這篇文章主要介紹了Spring Boot 實(shí)現(xiàn)配置文件加解密原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Spring MVC+FastJson+Swagger集成的完整實(shí)例教程
這篇文章主要給大家分享介紹了關(guān)于Spring MVC+FastJson+Swagger集成的完整實(shí)例教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
spring data簡(jiǎn)化jpa開(kāi)發(fā)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了spring data簡(jiǎn)化jpa開(kāi)發(fā),本文主要講述 Spring Data JPA,希望能夠深入學(xué)習(xí) Spring 和 JPA,有興趣的可以了解下2017-09-09
Java使用volatile關(guān)鍵字的注意事項(xiàng)
volatile關(guān)鍵字是Java中的一種稍弱的同步機(jī)制,為什么稱(chēng)之為弱機(jī)制。這篇文章主要介紹了Java使用volatile關(guān)鍵字的注意事項(xiàng),需要的朋友可以參考下2017-02-02
SpringBoot應(yīng)用自定義logback日志詳解
默認(rèn)情況下,SpringBoot內(nèi)部使用logback作為系統(tǒng)日志實(shí)現(xiàn)的框架,將日志輸出到控制臺(tái),不會(huì)寫(xiě)到日志文件。本篇文章主要講解下如何自定義logabck.xml以及對(duì)logback文件中配置做一個(gè)詳解,需要的可以參考一下2022-10-10
SpringBoot+WebSocket實(shí)現(xiàn)IM及時(shí)通訊的代碼示例
項(xiàng)目中碰到需要及時(shí)通訊的場(chǎng)景,使用springboot集成websocket,即可實(shí)現(xiàn)簡(jiǎn)單的及時(shí)通訊,本文介紹springboot如何集成websocket、IM及時(shí)通訊需要哪些模塊、開(kāi)發(fā)和部署過(guò)程中遇到的問(wèn)題、以及實(shí)現(xiàn)小型IM及時(shí)通訊的代碼,需要的朋友可以參考下2023-10-10
使用mybatis的interceptor修改執(zhí)行sql以及傳入?yún)?shù)方式
這篇文章主要介紹了使用mybatis的interceptor修改執(zhí)行sql以及傳入?yún)?shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
java 單例的五種實(shí)現(xiàn)方式及其性能分析
這篇文章主要介紹了java 單例的五種實(shí)現(xiàn)方式及其性能分析。的相關(guān)資料,需要的朋友可以參考下2017-07-07
IDEA打開(kāi)java項(xiàng)目后里面的java文件不能運(yùn)行解決辦法
這篇文章主要給大家介紹了關(guān)于IDEA打開(kāi)java項(xiàng)目后里面的java文件不能運(yùn)行的解決辦法,有時(shí)候想運(yùn)行別人的項(xiàng)目,但是別人的項(xiàng)目并非IDEA項(xiàng)目(甚至只有源碼),當(dāng)我們打開(kāi)項(xiàng)目時(shí)候,并不能運(yùn)行,需要的朋友可以參考下2023-10-10
如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯
這篇文章主要介紹了如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

