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

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

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

服務器之家 - 編程語言 - Java教程 - MyBatis開發Dao層的兩種方式實現(原始Dao層開發)

MyBatis開發Dao層的兩種方式實現(原始Dao層開發)

2021-06-22 13:10謝亞峰 Java教程

這篇文章主要介紹了MyBatis開發Dao層的兩種方式實現(原始Dao層開發),并對數據庫進行增刪查改,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文將介紹使用框架mybatis開發原始dao層來對一個對數據庫進行增刪改查的案例。

mapper動態代理開發dao層請閱讀我的下一篇博客:mybatis開發dao層的兩種方式(mapper動態代理方式)

本次使用的mybatis版本為mybatis-3.2.7,開發工具為eclipse,數據庫為mysql,jdk版本jdk1.8.0_151。

sqlsession使用范圍

sqlsessionfactorybuilder

  • 通過sqlsessionfactorybuilder創建會話工廠sqlsessionfactory
  • 將sqlsessionfactorybuilder當成一個工具類使用即可,不需要使用單例管理sqlsessionfactorybuilder。
  • 在需要創建sqlsessionfactory時候,只需要new一次sqlsessionfactorybuilder即可。

sqlsessionfactory

  • 通過sqlsessionfactory創建sqlsession,使用單例模式管理sqlsessionfactory(工廠一旦創建,使用一個實例)。
  • 將來mybatis和spring整合后,使用單例模式管理sqlsessionfactory。

sqlsession

  • sqlsession是一個面向用戶(程序員)的接口。
  • sqlsession中提供了很多操作數據庫的方法:如:selectone(返回單個對象)、selectlist(返回單個或多個對象)、。
  • sqlsession是線程不安全的,在sqlsesion實現類中除了有接口中的方法(操作數據庫的方法)還有數據域屬性。
  • sqlsession最佳應用場合在方法體內,定義成局部變量使用。

1、首先,使用eclipse新建一個java工程,在lib目錄下加入mybatis核心包、依賴包、數據驅動包,然后buildpath一下。。

2、添加日志文件,在classpath下創建log4j.properties如下:

?
1
2
3
4
5
6
# global logging configuration
log4j.rootlogger=debug, stdout
# console output...
log4j.appender.stdout=org.apache.log4j.consoleappender
log4j.appender.stdout.layout=org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionpattern=%5p [%t] - %m%n

3、在classpath下創建config資源文件夾,并在config文件夾下創建sqlmapconfig.xml,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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>
 <environments default="development">
  <environment id="development">
  <!-- 使用jdbc事務管理-->
   <transactionmanager type="jdbc" />
  <!-- 數據庫連接池-->
   <datasource type="pooled">
    <property name="driver" value="com.mysql.jdbc.driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterencoding=utf-8" />
    <property name="username" value="root" />
    <property name="password" value="root" />
   </datasource>
  </environment>
 </environments>
</configuration>

sqlmapconfig.xml是mybatis核心配置文件,上邊文件的配置內容為數據源、事務管理。

4、創建數據封裝使用的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
48
package com.xyfer.po;
 
import java.util.date;
/**
 *
 * @author xyfer
 * 數據封裝使用的user類
 *
 */
public class user {
 
 private int  id;   //id
 private string username; //姓名
 private string sex;   //性別
 private date  birthday; // 生日
 private string address;  // 地址
 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 string getsex() {
  return sex;
 }
 public void setsex(string sex) {
  this.sex = sex;
 }
 public date getbirthday() {
  return birthday;
 }
 public void setbirthday(date birthday) {
  this.birthday = birthday;
 }
 public string getaddress() {
  return address;
 }
 public void setaddress(string address) {
  this.address = address;
 }
 
}

5、在classpath下的資源文件夾sqlmapper目錄下創建sql映射文件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
<?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="test">
 <!-- 根據id查詢用戶 -->
 <select id="finduserbyid" parametertype="int" resulttype="com.xyfer.po.user">
  select * from user where id = #{id}
 </select>
 <!-- 添加用戶 -->
 <insert id="insertuser" parametertype="com.xyfer.po.user">
 <selectkey keyproperty="id" order="after" resulttype="java.lang.integer">
  select last_insert_id()
 </selectkey>
  insert into user(username,birthday,sex,address)
  values(#{username},#{birthday},#{sex},#{address})
 </insert>
 <!-- 修改用戶 -->
 <update id="updateuser" parametertype="com.xyfer.po.user">
  update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
  where id=#{id}
 </update>
 <!-- 刪除用戶 -->
 <delete id="deleteuserbyid" parametertype="int">
  delete from user where id=#{id}
 </delete>
</mapper>

6、mybatis框架需要加載映射文件,將users.xml添加在sqlmapconfig.xml,如下:

?
1
2
3
<mappers>
  <mapper resource="user.xml"/>
</mappers>

7、dao層接口

?
1
2
3
4
5
6
7
8
9
package com.xyfer.dao;
import com.xyfer.po.user;
public interface userdao {
 public user getuserbyid(int id); //根據id值查詢一個用戶
 public void insertuser(user user); //新增一個用戶
 public void updateuser(user user); //修改一個用戶
 public void deleteuser(int id); //刪除一個用戶
 
}

dao層接口實現類

?
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
package com.xyfer.dao.impl;
import org.apache.ibatis.session.sqlsession;
import org.apache.ibatis.session.sqlsessionfactory;
import com.xyfer.dao.userdao;
import com.xyfer.po.user;
 
public class userdaoimpl implements userdao {
 //注入sqlsessionfactory
 public userdaoimpl(sqlsessionfactory sqlsessionfactory){
   this.setsqlsessionfactory(sqlsessionfactory);
  }
   
 private sqlsessionfactory sqlsessionfactory;
  
 public sqlsessionfactory getsqlsessionfactory() {
  return sqlsessionfactory;
 }
 
 public void setsqlsessionfactory(sqlsessionfactory sqlsessionfactory) {
  this.sqlsessionfactory = sqlsessionfactory;
 }
 
 @override
 public user getuserbyid(int id) {
  sqlsession session = sqlsessionfactory.opensession();
  user user = null;
  try {
   //通過sqlsession調用selectone方法獲取一條結果集
   //參數1:指定定義的statement的id,參數2:指定向statement中傳遞的參數
   user = session.selectone("test.finduserbyid", 1);
   system.out.println(user);
      
  } finally{
   session.close();
  }
  return user;
 }
 
 @override
 public void insertuser(user user) {
  sqlsession sqlsession = sqlsessionfactory.opensession();
  try {
   sqlsession.insert("test.insertuser", user);
   sqlsession.commit();
  } finally{
   sqlsession.close();
  }
 }
 
 @override
 public void updateuser(user user) {
  sqlsession sqlsession = sqlsessionfactory.opensession();
  try {
   sqlsession.update("test.updateuser", user);
   sqlsession.commit();
  } finally{
   sqlsession.close();
  }
 }
 
 @override
 public void deleteuser(int id) {
  sqlsession sqlsession = sqlsessionfactory.opensession();
  try {
   sqlsession.update("test.deleteuserbyid", id);
   sqlsession.commit();
  } finally{
   sqlsession.close();
  }
 }
}

8、創建一個junit的測試類,對userdao進行測試。

?
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
package com.xyfer.dao.impl;
import static org.junit.assert.*;
import java.io.inputstream;
import java.util.date;
import org.apache.ibatis.io.resources;
import org.apache.ibatis.session.sqlsessionfactory;
import org.apache.ibatis.session.sqlsessionfactorybuilder;
import org.junit.before;
import org.junit.test;
import com.xyfer.dao.userdao;
import com.xyfer.po.user;
public class userdaoimpltest {
 
 private sqlsessionfactory sqlsessionfactory;
 
 @before
 public void init() throws exception {
  sqlsessionfactorybuilder sessionfactorybuilder = new sqlsessionfactorybuilder();
  inputstream inputstream = resources.getresourceasstream("sqlmapconfig.xml");
  sqlsessionfactory = sessionfactorybuilder.build(inputstream);
 }
 
 @test
 public void testgetuserbyid() {
  userdao userdao = new userdaoimpl(sqlsessionfactory);
  user user = userdao.getuserbyid(22);
  system.out.println(user);
 }
 
 @test
 public void testinsertuser() {
  user user = new user();
  user.setusername("小李");
  user.setsex("男");
  user.setbirthday(new date());
  user.setaddress("杭州市");
  userdao userdao = new userdaoimpl(sqlsessionfactory);
  userdao.insertuser(user);
 }
 
 @test
 public void testupdateuser() {
  user user = new user();
  user.setid(10);
  user.setusername("小威");
  user.setsex("男");
  user.setbirthday(new date());
  user.setaddress("杭州市");
  userdao userdao = new userdaoimpl(sqlsessionfactory);
  userdao.updateuser(user);
 }
 
 @test
 public void testdeleteuser() {
  userdao userdao = new userdaoimpl(sqlsessionfactory);
  userdao.deleteuser(10);
 }
}

以上步驟,完成使用mybatis框架開發原始dao層,并對數據庫進行增刪改查操作。

需要注意的是,上文提到的config文件夾和sqlmapper文件夾均為資源文件夾(source folder),默認會加載該路徑下的文件。希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/xyfer1018/p/10111817.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人日韩视频 | 日韩欧美的一区二区 | 国语精品久久 | 精品国产精品三级精品av网址 | 国产欧美综合一区二区三区 | 黑人巨大精品欧美一区免费视频 | 免费福利视频一区二区三区 | 色婷婷中文字幕 | 国产精品99久久久久久动医院 | 国产中文字幕在线 | 亚洲精品一区二区三区在线观看 | 亚洲天堂久久精品 | 国产精品69毛片高清亚洲 | 国产精品国产成人国产三级 | 激情综合网五月婷婷 | 狠狠av | 一级黄色国产片 | 日本理论在线 | 天堂va久久久噜噜噜久久va | www久久久久| 91精品久久久久久久久 | 在线黄av| 久久久久久国产精品美女 | 国内精品久久久久 | 四虎成人免费电影 | 天天澡天天狠天天天做 | 久久精品国产清自在天天线 | 欧美国产精品一区二区三区 | 在线中文av | 一区二区三区在线 | 视频在线一区二区三区 | a级在线观看| 精品国产精品三级精品av网址 | 亚洲欧美福利视频 | 亚洲精品成人在线 | 艹逼短视频 | 爱爱网av| 亚洲精品一级 | 国产a视频| 国产精品视频成人 | 久久久久无码国产精品一区 |