mybatis3.2.6整合spring4.0和springMVC4.0開發
1. 新建專案,匯入jar包
在eclipse/myeclipse上新建一個web專案,匯入如下圖所示的jar包,關於jar包的整合資源可到http://download.csdn.net/detail/qwe6112071/9467007
進行下載
如果使用了maven,則配置更為方便:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- spring版本號 -->
<spring.version >4.0.2.RELEASE</spring.version>
<!-- mybatis版本號 -->
<mybatis.version>3.2.6</mybatis.version>
<!-- log4j日誌檔案管理包版本 -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties >
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- 表示開發的時候引入,釋出的時候不會載入此包 -->
<scope>test</scope>
</dependency >
<!-- spring核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- 匯入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<!-- 匯入Mysql資料庫連結jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<!-- 匯入dbcp的jar包,用來在applicationContext.xml中配置資料庫 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- 日誌檔案管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- 格式化物件,方便輸出日誌 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!-- 映入JSON -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
</dependencies>
2. 配置web.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>demo</display-name>
<!-- 該servlet為tomcat,jetty等容器提供,將靜態資源對映從/改為/static/目錄,如原來訪問 http://localhost/foo.css ,現在http://localhost/static/foo.css -->
<!-- 不攔截靜態檔案 -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
<url-pattern>/css/*</url-pattern>
<url-pattern>/images/*</url-pattern>
<url-pattern>/fonts/*</url-pattern>
</servlet-mapping>
<!-- Spring和mybatis的配置檔案 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/spring-*.xml</param-value>
</context-param>
<!-- 編碼過濾器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring監聽器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 防止Spring記憶體溢位監聽器 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!-- 此處可以可以配置成*.do,對應struts的字尾習慣 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
3. 配置日誌記錄檔案
在classpath路徑下建立檔案log4j.properties,並在裡面填寫
log4j.rootLogger=DEBUG,Console,File
#定義日誌輸出目的地為控制檯
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以靈活地指定日誌輸出格式,下面一行是指定具體的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#檔案大小到達指定尺寸的時候產生一個新的檔案
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定輸出目錄
log4j.appender.File.File = logs/ssm.log
#定義檔案最大大小
log4j.appender.File.MaxFileSize = 10MB
# 輸出所以日誌,如果換成DEBUG表示輸出DEBUG以上級別日誌
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
4. 配置spring-mybatis整合檔案
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 自動掃描 -->
<context:component-scan base-package="com.yc" />
<!-- 引入配置檔案 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化連線大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 連線池最大數量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 連線池最大空閒 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 連線池最小空閒 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 獲取連線最大等待時間 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置對映檔案 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 例項化sqlSessionFactory時需要使用上述配置好的資料來源以及SQL對映檔案 -->
<property name="dataSource" ref="dataSource" />
<!-- 自動掃描mapping.xml檔案 , 省掉Configuration.xml裡的手工配置 -->
<property name="mapperLocations" value="classpath*:com/yc/mapping/*Mapper.xml"></property>
</bean>
<!-- DAO介面所在包名,Spring會自動查詢對應包及其子包下的所有對映介面類 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.yc.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事務管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" /> </bean>
<!-- 攔截器方式配置事物 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="append*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="repair" propagation="REQUIRED" />
<tx:method name="delAndRepair" propagation="REQUIRED" />
<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="load*" propagation="SUPPORTS" />
<tx:method name="search*" propagation="SUPPORTS" />
<tx:method name="*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut"
expression="execution(* com.yc.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut"
advice-ref="transactionAdvice" />
</aop:config>
</beans>
5. 配置model、mapping檔案
先配置資料庫測試表,這裡以一個移動端後臺的使用者表為例,因為已經在資料庫建好表了,這時可以到$MYSQL_HOME/bin目錄下使用命令:
mysqldump -u使用者名稱 -p密碼 資料庫 使用者表
來匯出相應的表結構如
mysqldump -uyc -pyc yc User > /home/user.sql
到對應目錄開啟user.sql檔案則得到如下的建表sql語句:
DROP TABLE IF EXISTS `User`;
CREATE TABLE `User` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`headImg` varchar(255) DEFAULT NULL,
`isDeleted` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`phoneNum` varchar(255) DEFAULT NULL,
`userType` varchar(255) DEFAULT NULL,
`openId` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
#以下插入兩條測試資料
LOCK TABLES `User` WRITE;
/*!40000 ALTER TABLE `User` DISABLE KEYS */;
INSERT INTO `User` VALUES (12,'http://localhost:8090/dheadImg/1.jpg',0,'glcnk','$2a$10$EpmkvDhQU5AHkn3Mvq1oDuJbT83aZRooqF0ZxdawiQsTz/sWfpxJa','1234','normal',NULL),(13,'http://localhost:8090/dheadImg/1.jpg',0,'psnys','$2a$10$dv4EQjbMwmUpbNB.kFySNe9RRJ1jwAXliK4FotoRLDrdfSAyWkk7C','3412','normal',NULL);
UNLOCK TABLES;
完成資料庫建表後,建立pojo檔案、xml等檔案,這裡有兩種方式,一種是手動配置,另一種是通過資料庫反向生成:
1. 手動配置
先建立對應的pojo類
package com.yc.model; public class User { private Integer id; private String headimg; private Integer isdeleted; private String name; private String password; private String phonenum; private String usertype; private String openid; //方便測試時用到 @Override public String toString() { return "User [id=" + id + ", headimg=" + headimg + ", isdeleted=" + isdeleted + ", name=" + name + ", password=" + password + ", phonenum=" + phonenum + ", usertype=" + usertype + ", openid=" + openid + "]"; } getter and setter here..... }
建立對映介面java檔案
package com.yc.dao; import com.yc.model.User; public interface UserMapper { User selectByPrimaryKey(Integer id); }
- 建立對應的UserMapper.xml檔案
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yc.dao.UserMapper" ><!-- 必須是UserMapper介面的全類名 -->
<resultMap id="BaseResultMap" type="com.yc.model.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="headImg" property="headimg" jdbcType="VARCHAR" />
<result column="isDeleted" property="isdeleted" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="password" property="password" jdbcType="VARCHAR" />
<result column="phoneNum" property="phonenum" jdbcType="VARCHAR" />
<result column="userType" property="usertype" jdbcType="VARCHAR" />
<result column="openId" property="openid" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, headImg, isDeleted, name, password, phoneNum, userType, openId
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from User
where id = #{id,jdbcType=INTEGER}
</select>
</mapper>
這裡需要注意的是一些開發規範的問題,對應spring-mybatis.xml掃描配置,UserMapper.java檔案存放在classpath:com/yc/dao下,UserMapper.xml存放在classpath:com/yc/mapping下,同時要特別注意的是UserMapper.xml檔案中的namespace套與UserMapper.java檔案相對應,如本例中的
com.yc.model.User
如果這裡配置錯誤的話,我們在測試時會報如下錯誤資訊:
nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: ‘file [/home/myBatisYc/target/classes/com/yc/mapping/UserMapper.xml]’; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias ‘com.yc.User’. Cause: java.lang.ClassNotFoundException: Cannot find class: com.yc.User
2. 通過資料庫建表反向生成
可先到 http://download.csdn.net/detail/qwe6112071/9467019
下載生成工具,解壓,然後配置裡面的generator.xml檔案,配置例項如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 資料庫驅動包位置 -->
<classPathEntry location="/home/zenghao/下載/generator/mysql-connector-java-5.1.34.jar" />
<!-- <classPathEntry location="C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar" />-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 資料庫連結URL、使用者名稱、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/yc" userId="root" password="root">
<!--<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" userId="msa" password="msa">-->
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.yc.model" targetProject="/home/zenghao/mybatis">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成的對映檔案包名和位置 -->
<sqlMapGenerator targetPackage="com.yc.mapping" targetProject="/home/zenghao/mybatis">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.yc.dao" targetProject="/home/zenghao/mybatis">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
<table tableName="Article" domainObjectName="BackArticle" enableCountByExample="false" enableUpdateByExample=
相關推薦
mybatis3.2.6整合spring4.0和springMVC4.0開發
1. 新建專案,匯入jar包
在eclipse/myeclipse上新建一個web專案,匯入如下圖所示的jar包,關於jar包的整合資源可到http://download.csdn.net/detail/qwe6112071/9467007進行下載
如果
Mybatis3.2.6+oracle例子
http://www.luoshengsha.com/266.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.
Python爬蟲(入門+進階)學習筆記 2-6 Scrapy的Request和Response詳解
上節課我們學習了中介軟體,知道了怎麼通過中介軟體執行反反爬策略。本節課主要介紹Scrapy框架的request物件和response物件
通常,Request物件在爬蟲程式中生成並傳遞到系統,直到它們到達下載程式,後者執行請求並返回一個Response物件,
spring boot 2.X整合spring security和spring oauth
網上有很多該系列的教程,但是很多都是spring boot1.x,很少看見關於spring boot 2.0 .本人是打算做個spring cloud的web程式,這個整合我就是放在zuul上,類似於做了個閘道器的鑑權吧。。
國際通用案例
深入理解計算機系統(原書第三版)練習題2.6 感性認識整型和浮點型別(同一個數)在機器中表示
/**
* 練習題2.6 感性認識整型和浮點型別(同一個數)在機器中表示
* 由於我的機器是小端表示,將列印結果還原真實數並用二進位制表示
* 41913500 -->(還原) 0x00359141 -->(二進位制) 0000 0000 0011 0101
Android Studio3.0之前的6種依賴方式和3.0之後新增的兩種依賴方式
一 3.0之前的6種方式
共發現6中方式
Compile,Provided,APK,Test compile,Debug compile,Release compile
1.1 Compile
對所有的build type以及f
將Ubuntu 10.04自帶2.6.32核心升級成3.0核心圖文教程
1、完成如下實踐工作,並截圖說明實踐步驟:1)下載安裝虛擬機器VMWare Workstation;2)在虛擬機器中安裝Linux2.x ;3)通過自行編譯,將Linux 2.x核心升級到Linux 3.x。
1) 安裝VMware Workstation 11.1
程式中如何列印日誌?(三) VC++6.0和BCB6.0都不支援變長引數的巨集
接著前面的來講。但是遺憾的是,無論是VC++6.0還是BCB6.0, 都不支援變長引數的巨集,所以在這種環境下,無法徹底解決之前的問題(在VS2005中可以)。既然如此,我們只能求其次了,還是利用變成引數的函式來迂迴解決吧:
//---------------
Android 拍照和相簿功能(適配Android 6.0和7.0系統和華為機型問題)
眾所周知,呼叫相機拍照和相簿中獲取圖片的功能,基本上是每個程式App必備的。
實現適配Android每個版本,國內手機,要處理的問題卻也不少。例如:Android6.0許可權問題,Android7.0 FileProvider問題,華為手機相簿獲取不到圖片的問
Ubuntu16.04的Opencv原始碼安裝3.2.0 和 3.0.0-alpha詳細安裝教程
教程1: Opencv3.0.0-alpha在ubuntu16.04的安裝
# step 1
# 安裝依賴 (太多了,自己相應替換)
sudo apt-get -y install libopencv-dev build-essential cmake
win10 NET Framework 3.5(包括.NET 2.0和3.0)錯誤代碼0x800f081f 的解決方法
inf 防火 類型 wal update 方法 安裝 pda ram
1、同時按下【Win+R】打開運行輸入 services.msc 點擊確定打開服務
2、雙擊打開【Windows Firewall】服務將啟動類型改“自動”,依次點擊【
django1.0和django2.0的基於正則表達式的url區別
正則 url django1.0
django2.0django1.0和django2.0的基於正則表達式的url區別
selenium 1.0、selenium2.0和selenium3.0區別
selenium 1.0 RC幾個核心組成部分:
RC Server - jar ,主要負責跟瀏覽器打交道
RC Client -jar,一系列jar包,主要用來寫測試用例
RC core -javascript ,由RC Server注入到瀏覽器的selenium
核心主要操作控制元件
這裡RC的
OpenCV中Mat和IplImage之間的相互裝換(OpenCV2.0和OpenCV3.0)
Mat是OpenCV和C++介面的矩陣類,IplImage是OpenCV和C語言介面的結構體。
Mat讀取顯示用的是imread、imshow等,IplImage讀取顯示用的是cvLoadImage()、cvShowImage()。
有時候會涉及到兩者之間的轉換,下面詳細見介紹一下兩者之
Android App相容8.0和9.0
Android在8.0限制了後臺服務這些,啟動後臺服務需要設定通知欄,使服務變成前臺服務。但是在9.0上,就會出現Permission Denial: startForeground requires android.permission.FOREGROUND_SERVICE。 解決辦法
Retrofit2.0和RxJava2.0的簡單封裝
一、首先新增專案依賴:
implementation "com.squareup.okhttp3:logging-interceptor:$var.loggingInterceptor"
android8.0和9.0適配的一些問題
1.懸浮窗windowmanager許可權問題 需要跳轉到對應的系統許可權管理處讓使用者自己勾選
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 進入設定系統應用
javaSE (三十四)File類和遞迴練習(統計資料夾大小、拷貝資料夾、層級列印資料夾、斐波拉契數列、獲取1000階乘全部0和尾部0數目、約瑟夫環)
1、統計資料夾大小:
思路:
套用之前已經做過的,鍵入一個路徑,若有效則封裝成File類
初始化計數器len,
若資料夾下是檔案,則記錄檔案.length()
若資料夾下是資料夾,遞迴
輸出len
注:遞迴也可以刪除資料夾,但是一定要先刪除裡
0.0.0.0 和127.0.0.1
127.0.0.1:是個(特殊的)IP地址,往往被分配給了loopback或僅區域網可以訪問的介面local-only interface
這是一個偽照的,假的,網路介面卡,其只能於同主機host內通訊
常用於:讓一個可以支援網路的程式,僅僅響應於同主機host內的客戶端
使用lifecycle時,1.0.0和1.0.3問題解決方法
將appcompat版本號改為27.0.2就行
implementation 'com.android.support:appcompat-v7:26.1.0'
我lifecycle修改後如下