中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

服務(wù)器上的網(wǎng)站怎么做3012022百度指數(shù)排名

服務(wù)器上的網(wǎng)站怎么做301,2022百度指數(shù)排名,網(wǎng)站模板50元,wordpress設(shè)計(jì)頁(yè)面教程day72 mybatis mybatis的實(shí)現(xiàn)方式 三種實(shí)現(xiàn)方式: 純xml方式,namespace隨便寫,id隨便寫,只要保證整個(gè)項(xiàng)目namespaceid唯一即可 xml接口的方式,namespace必須是接口的全路徑,id必須是接口的方法名&#xf…

day72

mybatis

mybatis的實(shí)現(xiàn)方式

三種實(shí)現(xiàn)方式:

  • 純xml方式,namespace隨便寫,id隨便寫,只要保證整個(gè)項(xiàng)目namespace+id唯一即可

  • xml+接口的方式,namespace必須是接口的全路徑,id必須是接口的方法名,結(jié)合第一種方式,接口中不允許存在重載的方法

  • 純注解方式,注冊(cè)時(shí)需要在mybatis的核心配置文件中設(shè)置mapper的class,或者mappers下面配置package

xml+接口方式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
?<settings><!--日志實(shí)現(xiàn)--><setting name="logImpl" value="STDOUT_LOGGING"/></settings>
?<environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mi?useSSL=false&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="Abc@1234"/></dataSource></environment></environments><mappers><mapper resource="com/saas/dao/ProductsMapper.xml"/>
<!-- ? ? ?  <mapper class="com.saas.dao.IProductDaoAnnotation"/>-->
<!-- ? ? ?  <package name="com.saas.dao"/>--></mappers>
</configuration>

在mybatis-config的核心配置文件中,設(shè)置mappers節(jié)點(diǎn),里面放mapper節(jié)點(diǎn),mapper標(biāo)簽中使用resource屬性加入xml文件路徑

package com.saas.pojo;
?
import lombok.Data;
?
@Data
public class Product {private int cid ? ? ;private String title ? ;private String subtitle;private String wtype ? ;private String img ? ? ;private String cdesc ? ;private double oprice  ;private double nprice  ;private int tid ? ? ;
}
package com.saas.dao;
?
import com.saas.pojo.Product;
?
import java.util.List;
?
public interface IProductDao {
?List<Product> getAllProducts();
?Product getProductById(int i);
?int updateProduct(Product product);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.saas.dao.IProductDao"><select id="getAllProducts" resultType="com.saas.pojo.Product">select * from products</select>
?<select id="getProductById" resultType="com.saas.pojo.Product">select * from products where cid = #{cid}</select>
?<update id="updateProduct">update products set title = #{title}, subtitle = #{subtitle}, wtype = #{wtype} , img = #{img} ,cdesc = #{cdesc} , oprice = #{oprice}, nprice = #{nprice}, tid = #{tid}  where cid = #{cid}</update>
</mapper>

這里要特別注意:

namespace必須是接口的全路徑

id必須是接口中的每個(gè)方法的方法名

由于之前mybatis中不能存在同namespace+id的場(chǎng)景,所以接口中不允許存在重載方法

package com.saas.dao;
?
import com.saas.pojo.Product;
import com.saas.util.SessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
?
import java.util.List;
?
public class TestProducts {
?private SqlSession session = null;
?@Testpublic void testGetAllProducts() {
?session = SessionUtil.getSession();
?IProductDao iProductDao = session.getMapper(IProductDao.class);
?List<Product> list = iProductDao.getAllProducts();
?for (Product p : list) {System.out.println(p);}
?SessionUtil.closeSession(session);}
?@Testpublic void testGetProductById() {session = SessionUtil.getSession();IProductDao iProductDao = session.getMapper(IProductDao.class);Product product = iProductDao.getProductById(1);System.out.println(product);SessionUtil.closeSession(session);}
?@Testpublic void testUpdateProduct() {session = SessionUtil.getSession();IProductDao iProductDao = session.getMapper(IProductDao.class);
?Product product = new Product();product.setCid(3);product.setTitle("iphone");product.setOprice(16999);product.setNprice(12999);product.setCdesc("iphone 15");product.setTid(1);product.setSubtitle("iphone15promax");product.setImg("ip15.jpg");product.setWtype("taobao");
?int i = iProductDao.updateProduct(product);
?System.out.println(i > 0);
?SessionUtil.closeSession(session);}
}

這里注意,我們需要結(jié)束SqlSession對(duì)象的getMapper()方法,方法參數(shù)設(shè)置接口的類對(duì)象,來(lái)得到接口對(duì)象

一旦有了接口對(duì)象,則借助該接口對(duì)象調(diào)用接口中的方法即可完成所有的crud功能

測(cè)試完成其crud功能

純注解方式

按照之前兩種方式,最直接的結(jié)果是,每個(gè)crud方法最終都對(duì)應(yīng)一個(gè)正確的SQL語(yǔ)句即可,所以注解方式更“直接”

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
?<settings><!--日志實(shí)現(xiàn)--><setting name="logImpl" value="STDOUT_LOGGING"/></settings>
?<environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mi?useSSL=false&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="Abc@1234"/></dataSource></environment></environments><mappers>
<!-- ? ? ?  <mapper resource="com/saas/dao/ProductsMapper.xml"/>--><mapper class="com.saas.dao.IProductDaoAnnotation"/>
<!-- ? ? ?  <package name="com.saas.dao"/>--></mappers>
</configuration>

在mybatis的核心配置文件中,mappers節(jié)點(diǎn)放入mapper子節(jié)點(diǎn),mapper標(biāo)簽中使用class屬性來(lái)實(shí)現(xiàn)主責(zé)功能

或者在mappers節(jié)點(diǎn)中放入package子節(jié)點(diǎn),里面寫name為包名,那就意味著這個(gè)包下的所有dao類都可以被一次性注冊(cè)到mybatis的核心工廠之上

package com.saas.dao;
?
import java.util.List;
import com.saas.pojo.Product;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
?
public interface IProductDaoAnnotation {
?@Select("select * from products")List<Product> getAllProducts();
?
// ?  @Select("select * from products limit #{param1}, #{param2}")
// ?  @Select("select * from products limit #{arg0}, #{arg1}")@Select("select * from products limit #{si}, #{ps}")List<Product> getProductsByPage(@Param("si") int si, @Param("ps") int ps);
?
?@Select("select * from products where cid = #{cid}")Product getProductById(int cid);
?@Insert("insert into products(title,subtitle,wtype,oprice,tid,img,cdesc,nprice) " +" values(#{title},#{subtitle},#{wtype},#{oprice},#{tid},#{img},#{cdesc},#{nprice})")int saveProduct(Product product);
}

第三種調(diào)用方式與第二種類似

需要借助SqlSession對(duì)象的getMapper()方法,將接口的類對(duì)象傳入后得到接口對(duì)象

一旦有了接口對(duì)象,則通過(guò)接口對(duì)象的crud方法完成對(duì)應(yīng)的curd功能

mybatis傳參

無(wú)參:SQL語(yǔ)句里面不寫占位符

一參:SQL語(yǔ)句里面#{}里面寫任意合法的標(biāo)識(shí)符

多參:

  • 對(duì)象傳參

  • map傳參

  • arg0, arg1, arg2

  • param1, param2, param3

  • @Param(“si”), @Param("si")

config配置

properties

<properties resource="db.properties">
</properties>

settings

<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="safeResultHandlerEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
<setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
<setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumTypeHandler"/>
<setting name="callSettersOnNulls" value="false"/>
<setting name="returnInstanceForEmptyRow" value="false"/>
<setting name="logPrefix" value="exampleLogPreFix_"/>
<setting name="logImpl" value="SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING"/>
<setting name="proxyFactory" value="CGLIB | JAVASSIST"/>
<setting name="vfsImpl" value="org.mybatis.example.YourselfVfsImpl"/>
<setting name="useActualParamName" value="true"/>
<setting name="configurationFactory" value="org.mybatis.example.ConfigurationFactory"/>
</settings>

類型別名

 <typeAliases><typeAlias type="com.saas.pojo.Product" alias="Product"/><package name="com.saas.pojo"/></typeAliases>

環(huán)境配置

<environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${user}"/><property name="password" value="${pass}"/></dataSource></environment>
</environments>

其中datasource的type有三個(gè)值:

  • unpooled:不使用連接池

  • pooled:使用連接池

  • jndi:需要額外配置應(yīng)用服務(wù)器

其中transactionManager的type值有兩個(gè):

  • JDBC: jdbc自身的提交或者回滾來(lái)實(shí)現(xiàn)事務(wù)

  • MANAGED:由容器自動(dòng)決定事務(wù)的提交或者回滾

映射器

    <mappers>
<!--        <mapper resource="com/saas/dao/ProductsMapper.xml"/>--><mapper class="com.saas.dao.IProductDaoAnnotation"/>
<!--        <package name="com.saas.dao"/>--></mappers>

映射器的配置分為兩大類

  • mapper子節(jié)點(diǎn)

    • resource,配置xml文件的相對(duì)路徑

    • url: 配置xml文件的 絕對(duì)路徑

    • class:配置映射的文件類

  • package子節(jié)點(diǎn):該包下是所有類都會(huì)被自動(dòng)映射

mapper映射

  • cache – 該命名空間的緩存配置。

  • cache-ref – 引用其它命名空間的緩存配置。

  • resultMap – 描述如何從數(shù)據(jù)庫(kù)結(jié)果集中加載對(duì)象,是最復(fù)雜也是最強(qiáng)大的元素。

  • parameterMap – 老式風(fēng)格的參數(shù)映射。此元素已被廢棄,并可能在將來(lái)被移除!請(qǐng)使用行內(nèi)參數(shù)映射。文檔中不會(huì)介紹此元素。

  • sql – 可被其它語(yǔ)句引用的可重用語(yǔ)句塊。

  • insert – 映射插入語(yǔ)句。

  • update – 映射更新語(yǔ)句。

  • delete – 映射刪除語(yǔ)句。

  • select – 映射查詢語(yǔ)句。

	<sql id="allPro">select * from products</sql><select id="getAllProducts" resultType="abc"><include refid="allPro"/></select><select id="getProductById" resultType="abc"><include refid="allPro"/>where cid = #{cid}</select><select id="getProductsByPage" resultType="abc"><include refid="allPro"/>limit #{si}, #{ps}</select><update id="updateProduct">update products set title = #{title}, subtitle = #{subtitle}, wtype = #{wtype} , img = #{img} ,cdesc = #{cdesc} , oprice = #{oprice}, nprice = #{nprice}, tid = #{tid}  where cid = #{cid}</update>
http://www.risenshineclean.com/news/62424.html

相關(guān)文章:

  • 服務(wù)好的企業(yè)做網(wǎng)站南昌seo數(shù)據(jù)監(jiān)控
  • 淄博 網(wǎng)站制作seo網(wǎng)站自動(dòng)發(fā)布外鏈工具
  • 微信做自己的網(wǎng)站濰坊seo培訓(xùn)
  • 網(wǎng)站淘寶客怎么做的b2b電子商務(wù)網(wǎng)站
  • 建站網(wǎng)址建設(shè)推廣資源seo
  • 淘寶客推廣網(wǎng)站怎么做百度競(jìng)價(jià)推廣自己可以做嗎
  • 廣州 網(wǎng)站 建設(shè) 制作培訓(xùn)課程開發(fā)
  • 合肥的網(wǎng)站建設(shè)州世界500強(qiáng)企業(yè)名單
  • 廈門做企業(yè)網(wǎng)站站長(zhǎng)收錄
  • 如何做網(wǎng)站代理站內(nèi)推廣有哪些方式
  • 可信的邢臺(tái)做網(wǎng)站搜索引擎優(yōu)化與推廣技術(shù)
  • 深圳優(yōu)化網(wǎng)站排名競(jìng)價(jià)推廣賬戶競(jìng)價(jià)托管費(fèi)用
  • 做兼職比較好的網(wǎng)站網(wǎng)站推廣優(yōu)化排名
  • 廈門市建設(shè)工程造價(jià)信息網(wǎng)如何對(duì)seo進(jìn)行優(yōu)化
  • 做PPT不錯(cuò)的網(wǎng)站有哪些網(wǎng)站優(yōu)化推廣平臺(tái)
  • 政府網(wǎng)站app建設(shè)百度權(quán)重優(yōu)化軟件
  • 玻璃鋼產(chǎn)品哪個(gè)網(wǎng)站做推廣好一鍵開發(fā)小程序
  • 為什么政府網(wǎng)站做的很爛圖片外鏈生成工具
  • 雁塔免費(fèi)做網(wǎng)站關(guān)鍵詞云圖
  • 網(wǎng)站定時(shí)數(shù)據(jù)切換怎么做的上海網(wǎng)站關(guān)鍵詞排名
  • php網(wǎng)站后臺(tái)模版重慶seo整站優(yōu)化方案范文
  • wordpress批量替換標(biāo)簽aso優(yōu)化榜單
  • 網(wǎng)站 優(yōu)化手機(jī)版網(wǎng)絡(luò)優(yōu)化大師手機(jī)版
  • 網(wǎng)站建設(shè)需要提供哪些信息優(yōu)化法治化營(yíng)商環(huán)境
  • 浙江省住房城鄉(xiāng)建設(shè)廳官方網(wǎng)站推廣網(wǎng)站有效的免費(fèi)方法
  • 網(wǎng)站上的動(dòng)圖都怎么做的中小企業(yè)網(wǎng)絡(luò)營(yíng)銷現(xiàn)狀
  • 天津大學(xué)生專業(yè)做網(wǎng)站直鏈平臺(tái)
  • 網(wǎng)站建設(shè)小程序開發(fā)公司關(guān)鍵詞推廣軟件排名
  • 娛樂(lè)網(wǎng)站 建站軟件搜索引擎優(yōu)化的主要策略
  • 即刻搜索收錄網(wǎng)站口碑優(yōu)化