国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Java教程 - Mybatis實(shí)現(xiàn)數(shù)據(jù)的增刪改查實(shí)例(CRUD)

Mybatis實(shí)現(xiàn)數(shù)據(jù)的增刪改查實(shí)例(CRUD)

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

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

什么是 MyBatis?

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

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

Mybatis實(shí)例

對一個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配置文件對應(yīng)一個接口 -->
  <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,可以解決類的屬性名和數(shù)據(jù)庫列名不一致的問題-->
  <!-- <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>
  
  <!--執(zhí)行增加操作的SQL語句。id和parameterType分別與IUserOperation接口中的addUser方法的名字和參數(shù)類型一致。
  useGeneratedKeys設(shè)置為"true"表明要MyBatis獲取由數(shù)據(jù)庫自動生成的主鍵;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>

配置文件實(shí)現(xiàn)了接口和SQL語句的映射關(guān)系。selectUsersByName采用了2種方式實(shí)現(xiàn),注釋掉的也是一種實(shí)現(xiàn),采用resultMap可以把屬性和數(shù)據(jù)庫列名映射關(guān)系定義好,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為操作接口,函數(shù)名和mybatis的xml配置文件中的操作id名對應(yīng)。

測試類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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩在线视频观看 | 中文字幕亚洲一区二区三区 | 午夜你懂得 | 国产亚洲精品久久久456 | 国产精品18久久久久久久久久久久 | 久久国 | 亚洲淫视频 | 亚洲三级黄色 | 国产色区| 午夜视频网 | 国产精品香蕉在线观看 | 精品国产欧美 | а天堂中文最新一区二区三区 | 国产成人精品亚洲日本在线观看 | 一区二区三区免费观看视频 | 国产成年人电影在线观看 | 亚洲国产精品成人 | 国产精品一区二区三区免费 | 日日夜夜狠狠干 | 天天综合久久 | 国产免费啪 | 国产中文视频 | 欧美亚洲激情 | 91免费版在线看 | 国产精品久久久久久久久久久天堂 | 久久综合导航 | 日韩电影中文字幕 | 欧美第一页 | 久久精品影视 | 色www精品视频在线观看 | 色亚洲成人 | 麻豆乱码国产一区二区三区 | 日韩一区二区三区电影在线观看 | 狠狠操综合网 | 一级特黄a免费观看视频 | 亚洲视频精品在线 | a视频在线观看免费 | 国产日韩精品在线观看 | 天天操天天碰 | 日韩一区二区精品 | 久久久精品欧美 |