mybitis實現增,刪,改,查,模糊查詢的兩種方式:(2)

方式二:mapper代理接口方式

這種方式只需要xml+接口(不用寫實體類)但是需要符合三個規范

  • 使用mapper'代理接口方式
  • 在同一目錄下(可以創建一個源文件夾,達到類文件和xml文件分類的作用)
  • xml中namespace:命名空間為接口的全限定名(包名+類名)
  • xml的文件名和接口的文件名相同,只是后綴名不同
  • 接口中的方法名和xml中sql的id相同

1.創建一個java工程

2.將mysql的jar,mybatis的jar添加到構建路徑中

3.寫好配置文件

4.連接到數據庫

5.寫一個和數據庫表對應的pojo類(普通的java對象)

6.寫一個接口

 1 package impl;
 2 
 3 import java.util.List;
 4 
 5 import entity.Login;
 6 
 7 public interface LoginImpl {
 8     //方法名要與xml文件中的id的唯一標識符相同
 9     List<Login> selectAll();
10     Login selectbyid(int id);
11     int insertone(Login lg);
12     int updateone(Login lg);
13 }

?

7.寫對應的xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 4 
 5 <!-- namespace:命名空間, 用于隔離sql語句 -->
 6 <mapper namespace="impl.LoginImpl">
 7 <!-- id是sql語句的唯一標識符,名字要與 接口中的方法名相同 -->
 8 
 9       <select id="selectAll" resultType="Login">
10           select * from t_login 
11       </select>
12       
13       <select id="selectbyid" parameterType="int" resultType="Login">
14           select *from t_login where id =#{id}
15       </select>
16       
17       <insert id="insertone" parameterType="Login" >
18           
19           insert into t_login (username,password) values(#{username},#{password})
20       </insert>
21       
22       <update id="updateone" parameterType="Login">
23           update t_login set username=#{username},password=#{password} where id = #{id}
24       </update>
25       
26       
27 </mapper>

?

8.寫測試類

 1 package test;
 2 
 3 
 4 import java.io.InputStream;
 5 import java.util.List;
 6 
 7 import org.apache.ibatis.io.Resources;
 8 import org.apache.ibatis.session.SqlSession;
 9 import org.apache.ibatis.session.SqlSessionFactory;
10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
11 
12 import entity.Login;
13 import impl.LoginImpl;
14 
15 public class Login_Test {
16 
17     
18 
19     public static void main(String[] args) throws Exception {
20         // TODO 自動生成的方法存根
21         //讀取配置文件
22         String resource = "main_config.xml";
23         InputStream is = Resources.getResourceAsStream(resource);
24         //使用建造者Builder創建sqlsession工廠
25         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
26         //打開session
27         SqlSession sqlSession = sqlSessionFactory.openSession();
28         System.out.println("數據庫已經連接"+sqlSession);
29         //使用mapper代理的方式
30          LoginImpl loginImpl = sqlSession.getMapper(LoginImpl.class);
31          /**
32           * 查詢所有
33           * List<Login> list = sqlSession.selectList("selectAll");
34           */
35          List<Login> selectAll = loginImpl.selectAll();
36          System.out.println("---------------查詢所有用戶------------");
37          for (Login login2 : selectAll) {
38             System.out.println("用戶id="+login2.getId()+"\t\t用戶名="+login2.getUsername()+"\t用戶密碼="+login2.getPassword());
39         }
40         
41          /**
42           * 通過id查詢用戶
43           * Login login = sqlSession.selectOne("selectbyid", 3);
44           */
45         System.out.println("-------------通過id查詢用戶---------------");
46          Login selectbyid = loginImpl.selectbyid(3);
47          System.out.println("通過id查詢用戶"+selectbyid);
48          
49          /**
50           * 插入一條數據
51           * insert = sqlSession.insert("insertone", login2);
52           */
53          System.out.println("-------------插入一條數據-----------");
54          Login login2 = new Login();
55          login2.setUsername("xy");
56          login2.setPassword("315364");
57          int insertone = loginImpl.insertone(login2);
58          System.out.println("插入一條數據成功"+insertone);
59          
60          /**
61           * 更新一條數據
62           * sqlSession.update("updateone", login3);
63           */
64          System.out.println("--------------更新一條數據------------");
65         Login login3 = new Login( 3, "333333","dhao");
66         int updateone = loginImpl.updateone(login3);
67         System.out.println("更新一條數據成功"+updateone);
68         //提交數據到數據庫
69         sqlSession.commit();
70         //關閉會話
71         sqlSession.close();
72         
73         
74         
75         
76 
77     }
78 
79 }

?

9.項目的結構

?

10.mybatis的主配置文件? 文件名:main_config.xml

?

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3  "http://mybatis.org/dtd/mybatis-3-config.dtd" >
 4 <configuration>
 5 <!-- 別名標簽 -->
 6 <!--把鼠標移到configuration標簽上面會出現以下信息:原因是因為引入了dtd約束文件 Element : configuration
 7 Copyright 2009-2016 the original author or authors. Licensed under the Apache License, Version 2.0 
 8  (the "License"); you may not use this file except in compliance with the License. You may obtain a copy 
 9  of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or 
10  agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, 
11  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License 
12  for the specific language governing permissions and limitations under the License.
13 
14 Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, 
15  objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)  -->
16  
17  <!-- 引入配置文件 屬性標簽 -->
18 <properties resource="mapper/main_config.properties"></properties>
19 
20 <!-- 別名    在單個配置文件中 寫別名即可-->
21 <typeAliases>    
22     <typeAlias type="entity.Login" alias="login"/>
23     <!-- 自動生成包下面的所有類的別名,別名就是類名,并且首字母大小寫都可以使用 -->
24     <package name="impl"/>
25 </typeAliases>
26 <!-- 使用哪個小環境  default就等于哪個小環境的id -->
27     <environments default="development">
28     
29         <environment id="development">
30             <!-- jdbc事務管理 -->
31             <transactionManager type="JDBC"></transactionManager>
32             <!-- 數據庫連接池 -->
33             <dataSource type="POOLED">
34                 <property name="driver" value="${driver}"/>
35                 <!-- localhost可以用127.0.0.1或者本機的ip地址表示 -->
36                 <property name="url" value="${url}"/>
37                 <property name="username" value="${username}"/>
38                 <property name="password" value="${password}"></property>
39             </dataSource>
40         </environment>
41         
42         <environment id="mysql">
43             <!-- jdbc事務管理 -->
44             <transactionManager type="JDBC"></transactionManager>
45             <!-- 數據庫連接池 -->
46             <dataSource type="POOLED">
47                 <property name="driver" value="${driver}"/>
48                 <!-- localhost可以用127.0.0.1或者本機的ip地址表示 -->
49                 <property name="url" value="${url}"/>
50                 <property name="username" value="${username}"/>
51                 <property name="password" value="${password}"></property>
52             </dataSource>
53         </environment>
54     </environments>
55     
56     <!-- 引入單個映射配置文件  *號表示0個或者多個 -->
57     <mappers>
58         <mapper resource="mapper/login_mapper.xml"/>
59         <!-- <package name="impl"/> -->
60     </mappers>
61 </configuration>

?

11.主配置文件的屬性文件??

?

?

轉載于:https://www.cnblogs.com/xyblogs/p/8947494.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254752.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言中的靜態函數的作用

轉載 在C語言中為什么要用靜態函數(static function)&#xff1f;如果不用這個static關鍵字&#xff0c;好象沒有關系。那么&#xff0c;用了static以后&#xff0c;有什么作用呢&#xff1f;我們知道&#xff0c;用了static的變量&#xff0c;叫做靜態變量&#xff0c;其意義是…

[轉] sql server 跨數據庫調用存儲過程

A庫存儲過程&#xff1a; create PROCEDURE [dbo].[spAAAForTest] ( UserName nvarchar(20) null ,LoginPwd nvarchar(60) null ) AS BEGINselect NA AS a, NB AS B, NC AS C;END 同一臺服務器實例&#xff0c;A&#xff0c;B兩個數據庫&#xff0c;…

get_metrology_object_result_contour查詢計量對象的結果輪廓

目錄get_metrology_object_result_contour&#xff08;算子&#xff09;描述參數get_metrology_object_result_contour&#xff08;算子&#xff09; get_metrology_object_result_contour - 查詢計量對象的結果輪廓。 get_metrology_object_result_contour&#xff08;&…

ABB 機器人 壓包指令PackRawBytes 解包指令UnpackRawBytes

ABB 壓包指令PackRawBytes 解包指令UnpackRawBytes PackRawBytes- 將數據導入 rawbytes 數據。 使用方法 PackRawBytes 用于將 num, dnum, byte,或者 string類型的數據&#xff0c;打包到 rawbytes 類型的變量中. 基本舉例 &#xff1a; VAR rawbytes raw_…

C語言中使用靜態函數的好處

靜態函數會被自動分配在一個一直使用的存儲區&#xff0c;直到退出應用程序實例&#xff0c;避免了調用函數時壓棧出棧&#xff0c;速度快很多。 關鍵字“static”&#xff0c;譯成中文就是“靜態的”&#xff0c;所以內部函數又稱靜態函數。但此處“static”的含義不是指存儲方…

react+redux+generation-modation腳手架搭建一個todolist

TodoList1. 編寫actions.js2. 分析state 試著拆分成多個reducer3. 了解store4. 了解redux數據流生命周期5. 分析容器組件和展示組件 搞清楚&#xff0c;數據到底是如何流動的&#xff1f;6. 編寫展示組件的代碼7. 編寫容器組件8. 傳入store9. 總結10. 參考TodoList 腳手架Githu…

c++11 原子類型與原子操作

1、原子類型和原子操作&#xff08;1&#xff09;類型&#xff08;2&#xff09;操作&#xff08;3&#xff09;詳述● 原子類型只能從其模板參數類型中進行構造&#xff0c;標準不允許原子類型進行拷貝構造、移動構造&#xff0c;以及使用operator等● atomic_flag 是一個原子…

get_metrology_object_measures獲取測量區域和計量模型的計量對象的邊緣位置結果

目錄get_metrology_object_measures&#xff08;算子&#xff09;描述參數get_metrology_object_measures&#xff08;算子&#xff09; get_metrology_object_measures - 獲取測量區域和計量模型的計量對象的邊緣位置結果。 get_metrology_object_measures&#xff08;&…

依弗科(上海)機電設備有限公司

機器人噴涂倒計時&#xff0c;上帝幫我實現愿望吧 阿門 &#xfeff;&#xfeff;&#xfeff;&#xfeff;

外部變量和外部函數

C程序由一組對象組成&#xff0c;這些對象包括程序中所使用的變量和實現特定功能的函數。變量可以分為函數內部定義、使用的變量和函數外部定義的變量&#xff0c;通常情況下&#xff0c;把函數內部定義、使用的變量稱為內部變量或局部變量&#xff0c;而將在函數外部定義的、供…

gulp中使用babel-polyfill編譯es6拓展語法

今天想在新項目中使用es6的generators&#xff0c;發現雖然gulp已經有了babel編譯&#xff0c;但仍會報錯&#xff0c;網上查找后發現解決辦法是加載polyfill&#xff0c;但是找到的辦法都不試用我的項目。 解決辦法&#xff1a;在index.html中加載node_modules的babel-polyfil…

CoDeSys

&#xfeff;&#xfeff;CoDeSys是全球最著名的PLC內核軟件研發廠家德國的3S&#xff08;SMART&#xff0c;SOFTWARE&#xff0c;SOLUTIONS&#xff09;公司出的一款與制造商無關的IEC 61131-1編程軟件。CoDeSys 支持完整版本的IEC61131標準的編程環境&#xff0c;支持標準的六…

使用halcon結合機械XY軸對相機進行9點標定

小哥哥小姐姐覺得有用點個贊唄&#xff01; 先在halcon中計算仿射變換矩陣并驗證 //在圖像中找到的模板中心位置 PicX:[1680.721,2065.147,911.499,526.798,1290.920,1285.731,1300.953] PicY:[968.321,964.366,976.283,980.035, 587.055,394.727,1355.487] //與圖像中查找…

Ubuntu Linux 提出新的發布模式——測試周

2019獨角獸企業重金招聘Python工程師標準>>> 導讀開源技術項目最大的優勢之一就是社區的每個人都可以自由地提出想法&#xff0c;如果獲得社區支持&#xff0c;它可以變成現實。著名的 Ubuntu 開發人員 Simon Quigley 就提出了一個可能改變 Ubuntu Linux 開發過程的…

264 I和IDR

I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便&#xff0c;要首個I幀和其他I幀區別開&#xff0c;所以才把第一個首個I幀叫IDR&#xff0c;這樣就方便控制編碼和解碼流程。IDR幀的作用是立刻刷新,使錯誤不致傳播,從IDR幀開始,重新算一個新的序列…

gen_caltab生成標定文件

目錄gen_caltab&#xff08;算子&#xff09;描述參數gen_caltab&#xff08;算子&#xff09; gen_caltab - 為具有矩形排列標記的校準板生成校準板描述文件和相應的PostScript文件。 gen_caltab&#xff08;:: XNum&#xff0c;YNum&#xff0c;MarkDist&#xff0c;Diamet…

主席樹,喵~

稍微總結一下主席樹吧 Too Difficult&#xff01;搞了一天搞出一大堆怎么令人悲傷的辣雞代碼。總之先總結一下吧&#xff0c;以后碰到這種問題直接拿去毒害隊友好了。 UPD 5/24 茍狗是沙比 一個節點記錄三個信息&#xff1a;lson,rson,sum 用pid表示節點個數。 build void buil…

【轉】小白級的CocoaPods安裝和使用教程

原文網址&#xff1a;http://www.jianshu.com/p/e2f65848dddc 百度有很多CocoaPods的安裝教程.第一次看的時候,確實有點摸不透的感覺.經過思考,一步一步來實踐,前后花了三十幾分鐘,才順利使用..所以想了想,我還是寫一個小白級的教程吧.細到每一個細節都說明. 讓你不用10分鐘解決…