激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Mybatis實現數據的增刪改查實例(CRUD)

Mybatis實現數據的增刪改查實例(CRUD)

2020-09-29 14:05ImportNew Java教程

本篇文章主要介紹了Mybatis實現數據的增刪改查實例(CRUD),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

什么是 MyBatis?

MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。 MyBatis 消除了幾乎所有的 JDBC 代碼和參數的手工設置以及對結果集的檢索。MyBatis 可以使用簡單的XML 或注解用于配置和原始映射,將接口和 Java 的 POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。

MyBatis下載:https://github.com/mybatis/mybatis-3/releases

Mybatis實例

對一個User表的CRUD操作:

User表:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `userName` varchar(50) DEFAULT NULL,
 `userAge` int(11) DEFAULT NULL,
 `userAddress` varchar(200) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'summer', '30', 'shanghai');
INSERT INTO `user` VALUES ('2', 'test2', '22', 'suzhou');
INSERT INTO `user` VALUES ('3', 'test1', '29', 'some place');
INSERT INTO `user` VALUES ('4', 'lu', '28', 'some place');
INSERT INTO `user` VALUES ('5', 'xiaoxun', '27', 'nanjing');

在Src目錄下建一個mybatis的xml配置文件Configuration.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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">
<configuration>
  <!-- mybatis別名定義 -->
  <typeAliases>
    <typeAlias alias="User" type="com.mybatis.test.User"/>
  </typeAliases>
 
  <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://127.0.0.1:3306/mybatis" />
      <property name="username" value="root"/>
      <property name="password" value="admin"/>
      </dataSource>
    </environment>
  </environments>
  
  <!-- mybatis的mapper文件,每個xml配置文件對應一個接口 -->
  <mappers>
    <mapper resource="com/mybatis/test/User.xml"/>
  </mappers>
</configuration>

定義User mappers的User.xml配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?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.mybatis.test.IUserOperation">
 
  <!-- select語句 -->
  <select id="selectUserByID" parameterType="int" resultType="User">
    select * from `user` where user.id = #{id}
  </select>
  
  <!-- 定義的resultMap,可以解決類的屬性名和數據庫列名不一致的問題-->
  <!-- <resultMap type="User" id="userResultMap">
    <id property="id" column="user_id" />
    <result property="userName" column="user_userName" />
    <result property="userAge" column="user_userAge" />
    <result property="userAddress" column="user_userAddress" />
  </resultMap> -->
  
  <!-- 返回list的select語句,注意 resultMap的值是指向前面定義好的 -->
  <!-- <select id="selectUsersByName" parameterType="string" resultMap="userResultMap">
    select * from user where user.userName = #{userName}
  </select> -->
  
  <select id="selectUsersByName" parameterType="string" resultType="User">
    select * from user where user.userName = #{userName}
  </select>
  
  <!--執行增加操作的SQL語句。id和parameterType分別與IUserOperation接口中的addUser方法的名字和參數類型一致。
  useGeneratedKeys設置為"true"表明要MyBatis獲取由數據庫自動生成的主鍵;keyProperty="id"指定把獲取到的主鍵值注入到User的id屬性-->
  <insert id="addUser" parameterType="User"
    useGeneratedKeys="true" keyProperty="id">
    insert into user(userName,userAge,userAddress)
       values(#{userName},#{userAge},#{userAddress})
  </insert>
  
  <update id="updateUser" parameterType="User" >
    update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
  </update>
  
  <delete id="deleteUser" parameterType="int">
    delete from user where id=#{id}
  </delete>
  
</mapper>

配置文件實現了接口和SQL語句的映射關系。selectUsersByName采用了2種方式實現,注釋掉的也是一種實現,采用resultMap可以把屬性和數據庫列名映射關系定義好,property為類的屬性,column是表的列名,也可以是表列名的別名!

User類的定義:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.mybatis.test;
 
public class User {
  
  private int id;
  private String userName;
  private int userAge;
  private String userAddress;
  
  public int getId() {
    return id;
  }
  
  public void setId(int id) {
    this.id = id;
  }
  
  public String getUserName() {
    return userName;
  }
  
  public void setUserName(String userName) {
    this.userName = userName;
  }
  
  public int getUserAge() {
    return userAge;
  }
  
  public void setUserAge(int userAge) {
    this.userAge = userAge;
  }
  
  public String getUserAddress() {
    return userAddress;
  }
  
  public void setUserAddress(String userAddress) {
    this.userAddress = userAddress;
  }
  
  @Override
  public String toString(){
    return this.userName+" "+this.userAge+" "+this.userAddress;
  }
 
}

IUserOperaton定義:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.mybatis.test;
 
import java.util.List;
 
public interface IUserOperation {
  
  public User selectUserByID(int id);
  
  public List<User> selectUsersByName(String userName);
  
  public void addUser(User user);
  
  public void updateUser(User user);
  
  public void deleteUser(int id);
  
}

IUserOperation為操作接口,函數名和mybatis的xml配置文件中的操作id名對應。

測試類Test:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.mybatis.test;
 
import java.io.Reader;
import java.util.List;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
public class Test {
 
  private static SqlSessionFactory sqlSessionFactory;
  private static Reader reader;
 
  static {
    try {
      reader = Resources.getResourceAsReader("Configuration.xml");
      sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  public static SqlSessionFactory getSession() {
    return sqlSessionFactory;
  }
 
  public void getUserByID(int userID) {
    SqlSession session = sqlSessionFactory.openSession();
    try {
      IUserOperation userOperation = session
          .getMapper(IUserOperation.class);
      User user = userOperation.selectUserByID(userID);
      if (user != null) {
        System.out.println(user.getId() + ":" + user.getUserName()
            + ":" + user.getUserAddress());
      }
 
    } finally {
      session.close();
    }
  }
 
  public void getUserList(String userName) {
    SqlSession session = sqlSessionFactory.openSession();
    try {
      IUserOperation userOperation = session
          .getMapper(IUserOperation.class);
      List<User> users = userOperation.selectUsersByName(userName);
      for (User user : users) {
        System.out.println(user.getId() + ":" + user.getUserName()
            + ":" + user.getUserAddress());
      }
 
    } finally {
      session.close();
    }
  }
 
  /**
   * 增加后要commit
   */
  public void addUser() {
    User user = new User();
    user.setUserAddress("place");
    user.setUserName("test_add");
    user.setUserAge(30);
    SqlSession session = sqlSessionFactory.openSession();
    try {
      IUserOperation userOperation = session
          .getMapper(IUserOperation.class);
      userOperation.addUser(user);
      session.commit();
      System.out.println("新增用戶ID:" + user.getId());
    } finally {
      session.close();
    }
  }
 
  /**
   * 修改后要commit
   */
  public void updateUser() {
    SqlSession session = sqlSessionFactory.openSession();
    try {
      IUserOperation userOperation = session
          .getMapper(IUserOperation.class);
      User user = userOperation.selectUserByID(1);
      if (user != null) {
        user.setUserAddress("A new place");
        userOperation.updateUser(user);
        session.commit();
      }
    } finally {
      session.close();
    }
  }
 
  /**
   * 刪除后要commit.
   *
   * @param id
   */
  public void deleteUser(int id) {
    SqlSession session = sqlSessionFactory.openSession();
    try {
      IUserOperation userOperation = session
          .getMapper(IUserOperation.class);
      userOperation.deleteUser(id);
      session.commit();
    } finally {
      session.close();
    }
  }
 
  public static void main(String[] args) {
    try {
      Test test = new Test();
      // test.getUserByID(1);
      // test.getUserList("test1");
      // test.addUser();
      // test.updateUser();
      // test.deleteUser(6);
 
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
 
}

代碼下載:MyBaitsSimpleDemo.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.tuicool.com/articles/r6zAfi3

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色欲香天天天综合网站 | 亚洲一区播放 | 久久一区二区三区av | 久久久婷婷一区二区三区不卡 | 国产一区免费视频 | 在线91视频 | 毛片免费观看视频 | 国产一区在线观看视频 | 亚洲成人精品国产 | 国产噜噜噜 | 99视频网 | 免费观看黄色一级视频 | 精品亚洲视频在线观看 | 成人不卡一区二区 | 日本免费中文字幕 | 久久精品中文字幕一区二区三区 | 越南一级黄色片 | 在线观看视频日本 | 九九热在线视频观看 | 日韩视频区| 国产一区二区三区四区五区在线 | 水卜樱一区二区av | 国产精品成人一区二区三区吃奶 | 久久精品视频网址 | 蜜桃av网| 久草在线观看福利视频 | 欧美色淫 | 粉嫩一区 | 亚洲综合色视频在线观看 | 精品视频一区二区三区四区 | 久久精品一区二区三区不卡牛牛 | 免费黄色欧美视频 | 欧美日韩激情 | 黄色免费大片 | 羞羞电影网 | 免费观看一级欧美大 | 99欧美精品 | 爽爽淫人综合网网站 | 国产精品一品二区三区四区18 | 日本成人在线免费 | 艹逼|