Mybatis學習---連接MySQL數據庫


 

【目錄】

  😝新建maven項目

  😁搭建springMVC

  😎使用MyBatis連接數據庫

    😊MyBatis整合SpringMVC

  😂MyBatis逆向工程

 

【MyBatis】

MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。
MyBatis 消除 了幾乎所有的 JDBC 代碼和參數的手工設置以及結果集的檢索。
MyBatis 使用簡單的 XML 或注解用於配置和原始映射,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 對象)映射成數據庫中的記錄。 每個MyBatis應用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。
SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。 用xml文件構建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創建的實例。
MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。 MyBatis 最強大的特性之一就是它的動態語句功能。如果您以前有使用JDBC或者類似框架的經歷,您就會明白把SQL語句條件連接在一起是多么的痛苦,
要確保不能忘記空格或者不要在columns列后面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。盡管與動態SQL一起工作不是在開一個party,但是MyBatis確實能通過在任何映射SQL語句中

 

 

【步驟】

①獲取MyBatis加包(在😁項目基礎上使用MyBatis)

  在https://mvnrepository.com/上搜索MyBatis可以選擇相應的版本

  

 

②在pop.xml中添加以下代碼,管理Mybatis加包

1 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
2 <dependency>
3     <groupId>org.mybatis</groupId>
4     <artifactId>mybatis</artifactId>
5     <version>3.5.0</version>
6 </dependency>

 

🌂在Java Resources中創建conf.xml

  

  

④配置數據庫連接信息

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
 3 <configuration>
 4     <environments default="development">
 5         <environment id="development">
 6             <transactionManager type="JDBC" />
 7             <!-- 配置數據庫連接信息 -->
 8             <dataSource type="POOLED">
 9                 <property name="driver" value="com.mysql.cj.jdbc.Driver" />
10                 <property name="url" value="jdbc:mysql://服務器地址:端口號/數據庫名稱?serverTimezone=GMT%2B8" />
11                 <property name="username" value="數據庫用戶名" />
12                 <property name="password" value="數據庫密碼" />
13             </dataSource>
14         </environment>
15     </environments>     
16     
17 </configuration>

 

😭查詢數據庫中S_User表數據----建立對應的實體類

    

  

 1 package com.springdemo.model;  2 
 3 public class User {  4 
 5     public User(String userId, String userName, String userPwd, String userPower) {  6         super();  7         this.userId = userId;  8         this.userName = userName;  9         this.userPwd = userPwd; 10         this.userPower = userPower; 11  } 12     
13     public User() { 14         super(); 15  } 16 
17     private int _key; 18     private String userId; 19     private String userName; 20     private String userPwd; 21     private String userPower; 22     
23     public int get_key() { 24         return _key; 25  } 26 
27     public void set_key(int _key) { 28         this._key = _key; 29  } 30 
31     public String getUserId() { 32         return userId; 33  } 34 
35     public void setUserId(String userId) { 36         this.userId = userId; 37  } 38 
39     public String getUserName() { 40         return userName; 41  } 42 
43     public void setUserName(String userName) { 44         this.userName = userName; 45  } 46 
47     public String getUserPwd() { 48         return userPwd; 49  } 50 
51     public void setUserPwd(String userPwd) { 52         this.userPwd = userPwd; 53  } 54 
55     public String getUserPower() { 56         return userPower; 57  } 58 
59     public void setUserPower(String userPower) { 60         this.userPower = userPower; 61  } 62 
63  @Override 64     public String toString() { 65         return "User [key=" + _key + ",id="+userId+" name=" + userName + ", power=" + userPower + "]"; 66  } 67 }

:創建get ,set,構造函數快捷鍵(右鍵--> source )

  

 

⑥創建User表Sql查詢映射文件userMapper.xml

  

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3 <!-- 為這個mapper指定一個唯一的namespace,namespace的值習慣上設置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的  4 例如namespace="com.springdemo.mapping.userMapper"就是com.springdemo.mapping(包名)+userMapper(userMapper.xml文件去除后綴)  5  -->
 6 <mapper namespace="com.springdemo.mapping.userMapper">
 7     <!-- 在select標簽中編寫查詢的SQL語句, 設置select標簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復  8  使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型  9  resultType="com.springdemo.model.User"就表示將查詢結果封裝成一個User類的對象返回 10  User類就是users表所對應的實體類 11     -->
12  
13     <!-- 根據_key查詢得到一個user對象-->
14     <select id="getUser" parameterType="int" 
15  resultType="com.springdemo.model.User"> <!-- 創建對應user實體類的位置 -->
16  select * from S_USER where _key=#{id} 17     </select> 
18 </mapper>

 

⑦在conf.xml文件中注冊userMapper.(<configuration>標簽內)

1   <mappers>
2         <!-- 注冊userMapper.xml文件, 3  userMapper.xml位於com.springdemo.mapping這個包下,所以resource寫成com/springdemo/mapping/userMapper.xml-->
4         <mapper resource="com/springdemo/mapping/userMapper.xml"/>
5   </mappers>

 

⑧使用Test.java 文件添加測試

 1 package com.springdemo.impl;  2 
 3 import java.io.IOException;  4 import java.io.InputStream;  5 import java.io.Reader;  6 import java.util.List;  7 
 8 import com.springdemo.model.User;  9 import com.springdemo.tools.DBTools; 10 
11 import org.apache.ibatis.io.Resources; 12 import org.apache.ibatis.session.SqlSession; 13 import org.apache.ibatis.session.SqlSessionFactory; 14 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 15 
16 public class Test { 17 
18     public static void main(String[] args) throws IOException { 19     
20         //mybatis的配置文件
21         String resource = "conf.xml"; 22         //使用類加載器加載mybatis的配置文件(它也加載關聯的映射文件)
23         
24         InputStream is = Resources.getResourceAsStream(resource); 25         //構建sqlSession的工廠
26        
27         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); 28         //使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關聯的映射文件) 29         //Reader reader = Resources.getResourceAsReader(resource); 30         //構建sqlSession的工廠 31         //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 32         //創建能執行映射文件中sql的sqlSession
33         SqlSession session = sessionFactory.openSession(); 34         /**
35  * 映射sql的標識字符串, 36  * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, 37  * getUser是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執行的SQL 38          */
39         
40     /* 根據——key查找 */
41         String statement = "com.springdemo.mapping.userMapper.getUser"; 42         //映射sql的標識字符串,getUser與映射文件中配置select標簽id一致 43         //執行查詢返回一個唯一user對象的sql
44         User user = session.selectOne(statement,2); 45  System.out.println(user); 46         
47 }

 

⑨執行結果

  

 

【增刪改查】

  修改userMapper.xml統一管理返回類型

1 <resultMap id="userMap" type="com.springdemo.model.User">
2         <id property="_key" column="_key" javaType="java.lang.Integer"></id>
3         <result property="userId" column="userId" javaType="java.lang.String"></result>
4         <result property="userName" column="userName" javaType="java.lang.String"></result>
5         <result property="userPwd" column="userPwd" javaType="java.lang.String"></result>
6         <result property="userPower" column="userPower" javaType="java.lang.String"></result>
7 </resultMap>

  resultMap設置對應的實體類

 

①查詢所有user記錄

   🍕userMapper.xml配置

  <select id="selectUser" resultMap="userMap">  select * from s_user </select>

  resultMap設置返回的ReusltMap

  🍔測試java代碼

1  String stateselect = "com.springdemo.mapping.userMapper.selectUser"; 2  List<User> userList = session.selectList(stateselect); 3  for(int i=0;i<userList.size();i++) { 4  System.out.println(userList.get(i)); 5  }

 

②刪除指定user記錄

  🍟userMapper.xml配置

 <delete id="deleteUser" parameterType="int"> delete from S_user where _key=#{_key} </delete>

 

  🌭測試java代碼

1    String statementdl = "com.springdemo.mapping.userMapper.deleteUser"; 2    try { 3        session.delete(statementdl,4); 4  session.commit(); 5     } catch (Exception e) { 6  e.printStackTrace(); 7  session.rollback(); 8     }

 

🌂更新user表記錄

  🍿userMapper.xml配置

<update id="updateUser" > update S_user set userPwd=#{userName},userPwd=#{userPwd},userPower=#{userPower} where _key=#{_key} </update>

  🥓測試java代碼

 1     String statementup = "com.springdemo.mapping.userMapper.updateUser";  2     User userup = new User("wqyx","wqyx", "hhh","超級");  3     userup.set_key(2);  4     try {  5  session.update(statementup, userup);  6  session.commit();  7     } catch (Exception e) {  8  e.printStackTrace();  9  session.rollback(); 10     }

 

④新增user表記錄

  🍿userMapper.xml配置

<insert id="insertUser" useGeneratedKeys="true" keyProperty="_key"> insert into S_USER (userId,userName,userPwd,userPower) values (#{userId},#{userName},#{userPwd},#{userPower}) </insert>

  🥓測試java代碼

1   String statementIn = "com.springdemo.mapping.userMapper.insertUser"; 2   User userin = new User("wll","wll", "123456","7000"); 3   try { 4  session.insert(statementIn,userin); 5  session.commit(); 6   } catch (Exception e) { 7  e.printStackTrace(); 8  session.rollback(); 9   }

 

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM