日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

基于Mybatis實現CRUD操作過程解析(xml方式)

瀏覽:34日期:2023-10-21 19:11:27

1、環境搭建

1.1 表結構

create table user ( id int primary key auto_increment, username varchar(20) not null, birthday date, sex char(1) default ’男’, address varchar(50));insert into user values (null, ’孫悟空’,’1980-10-24’,’男’,’花果山水簾洞’);insert into user values (null, ’白骨精’,’1992-11-12’,’女’,’白虎嶺白骨洞’);insert into user values (null, ’豬八戒’,’1983-05-20’,’男’,’福臨山云棧洞’);insert into user values (null, ’蜘蛛精’,’1995-03-22’,’女’,’?絲洞’);

1.2 創建項目

導入如下jar

mybatis框架包 數據庫驅動包 log4j日志包 junit單元測試包

1.3 準備配置文件

在src下準備配置文件:sqlMapConfig.xml

<?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='mybatis'> <environment id='mybatis'> <!--事務管理器--> <transactionManager type='JDBC'></transactionManager> <!--配置數據源--> <dataSource type='pooled'><property name='driver' value='com.mysql.jdbc.Driver'/><property name='url' value='jdbc:mysql:///test'/><property name='username' value='root'/><property name='password' value='root'/> </dataSource> </environment> </environments></configuration>

在 src 下準備配置文件:log4j.properties

# Global logging configurationlog4j.rootLogger=DEBUG, stdout

# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

2-增刪改查源碼

1.1 執行結果

1.2 User類代碼

import java.sql.Date;/** 用戶實體類對象 */public class User { private Integer id; private String username; private Date birthday; private String sex; private String address; public User() { } public User(Integer id, String username, Date birthday, String sex, String address) { this.id = id; this.username = username; this.birthday = birthday; this.sex = sex; this.address = address; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return 'User{' +'id=' + id +', username=’' + username + ’’’ +', birthday=' + birthday +', sex=’' + sex + ’’’ +', address=’' + address + ’’’ +’}’; }}

1.3 UserMapper接口代碼

package com.vg.dao;import com.vg.entity.User;import org.apache.ibatis.annotations.Param;import java.util.List;/** * 數據訪問層接口:對用戶進行增刪改查操作 */public interface UserMapper {/** * 添加用戶 */int addUser(User user);/** * 根據id刪除用戶 */void deleteUser(Integer id);/** * 通過id修改用戶信息 *//** * 修改用戶信息 */void updateUser(User user);/** * 查詢所有用戶 */List<User> findAllUsers();/** * 根據id查詢用戶 */User findUserById(int id);/** * 根據用戶名模糊查詢用戶 */List<User> findUsersByName(String username);/** * 根據姓名和性別查詢用戶數據(姓名使用模糊查詢) *//** * 根據用戶名稱模糊查詢用戶 */}}

1.4 UserMapper.xml接口映射文件

<?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屬性的作用:關聯接口,需要配置對應接口的類全名字符串--><mapper namespace='com.vg.dao.UserMapper'> <!-- 完成接口映射配置文件UserMapper.xml的編寫:這個映射文件就相當于UserMapper接口實現類配置 --> <!--select標簽的作用:用來配置查詢要執行的SQL語句 id屬性:關聯接口中的方法名 resultType屬性:設置方法返回的數據類型,如果是集合則配置集合元素的類型 --> <select resultType='User'> select * from user </select> <select parameterType='int' resultType='User'> select * from user where id = #{id}; </select> <select parameterType='string' resultType='User'> select *from user where username like #{username} </select> <insert parameterType='user' > insert into user values(null,#{username},#{birthday},#{sex},#{address}); </insert> <update parameterType='user'> update user set username = #{username}, birthday = #{birthday},sex = #{sex}, address = #{address} where id = #{id} </update> <delete parameterType='integer'> delete from user where id = #{id} </delete></mapper>

1.5 在主配置文件中加載接口映射文件

<mappers> <!--mapper標簽:一個該標簽就配置一個接口映射文件 resource屬性:配置映射文件的路徑,路徑分隔符使用 / : com/vg/dao/UserMapper.xml url:用于配置互聯網上的映射文件的路徑,比如:http://www.baidu.com/xxx.xml --> <!--<mapper resource='com/vg/dao/UserMapper.xml'></mapper>--> <package name='com.vg.dao'/></mappers>

1.6 測試類代碼

package com.vg.test;import com.vg.dao.UserMapper;import com.vg.entity.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.After;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.sql.Date;import java.util.List;/** * 測試類 */public class TestUserMapper {private static SqlSessionFactory sqlSessionFactory =null;private SqlSession sqlSession =null;private UserMapper userMapper =null;// 該方法在所有測試方法執行之前執行1次@BeforeClasspublic static void init() throws Exception {// 1. 通過Resources類,加載sqlMapConfig.xml,得到文件輸入流對InputStream in = Resources.getResourceAsStream('sqlMapConfig.xml');// 2. 實例化會話工廠創建類SqlSessionFactoryBuilder對象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// 3. 根據字節輸入流獲取SqlSessionFactory對象sqlSessionFactory = builder.build(in);}// 該方法會在每個測試方法執行之前執行1次@Beforepublic void before(){// 4. 獲取SqlSession對象,等價連接對象// true:事務自動提交,false:不自動提交,默認值sqlSession = sqlSessionFactory.openSession();// 5. 創建接口 實現類對象userMapper = sqlSession.getMapper(UserMapper.class);}/** * 測試方法:通過用戶名模糊查詢用戶 */@Testpublic void testAddUser() throws Exception{// 1. 獲得接口代理對象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 2. 創建User對象User u = new User();u.setUsername('如來佛祖111');u.setBirthday(Date.valueOf('1980-01-20'));u.setAddress('西天靈山');u.setSex('男');// 3. 保存用戶信息int row = userMapper.addUser(u);System.out.println('row = ' + row);// 4. 手動提交事務sqlSession.commit();}/** * 測試方法:通過用戶名模糊查詢用戶 */@Testpublic void testFindUserByName() throws Exception{List<User> userList = userMapper.findUsersByName('%精%');for (User user : userList) {System.out.println(user);}}/** * 測試方法:查詢所有用戶 */@Testpublic void testFindAllUsers() throws Exception{List<User> userList = userMapper.findAllUsers();for (User user : userList) {System.out.println(user);}}/** * 根據id查詢用戶 * @throws Exception */@Testpublic void testFindUserById()throws Exception{// 6. 調用接口的方法根據id查詢用戶User user = userMapper.findUserById(1);System.out.println('user = ' + user);}@Testpublic void testUpdateUser()throws Exception{// 創建用戶對象User user = new User(6,'牛魔王',Date.valueOf('1998-02-20'),'妖','牛魔洞');// 更新用戶userMapper.updateUser(user);// 提交事務sqlSession.commit();}@Testpublic void testDeleteUser()throws Exception{// 1. 獲得接口代理對象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 2. 根據id刪除用戶userMapper.deleteUser(6);// 3. 提交事務sqlSession.commit();}@Afterpublic void after() {// 7. 關閉會話,釋放資源。sqlSession.close();}}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Mybatis 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品网站在线看| 亚洲福利国产| 蜜桃久久精品一区二区| 99香蕉国产精品偷在线观看 | 久久精品国产68国产精品亚洲| 国产第一亚洲| 色综合狠狠操| 国产在线观看www| 伊人久久高清| a日韩av网址| 日韩精品dvd| 久久国产小视频| 亚洲欧美视频| 日韩高清二区| 麻豆精品视频在线| 国产成人精品免费视| 欧美日韩视频免费观看| 激情综合网站| 亚洲久久视频| 国产激情久久| 日韩欧美另类一区二区| 欧美+日本+国产+在线a∨观看| 日韩视频一区二区三区在线播放免费观看 | 深夜福利亚洲| 国产伦精品一区二区三区视频 | 久久国内精品视频| 精品福利久久久| 久久美女精品| 亚洲人成在线影院| 国产精品久久久一区二区| 久久免费精品| 色爱av综合网| 蜜臀国产一区二区三区在线播放| 国产亚洲欧美日韩在线观看一区二区| 久久只有精品| 欧美+亚洲+精品+三区| 日韩精品视频一区二区三区| 欧美国产另类| 99久精品视频在线观看视频| 综合色一区二区| 国际精品欧美精品| 自由日本语亚洲人高潮| 日韩av成人高清| 精品精品99| 亚洲电影在线一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品magnet| 亚洲va在线| 国产亚洲欧美日韩精品一区二区三区| 欧美日韩尤物久久| 麻豆成人在线| 国产一区二区视频在线看| 日韩精品dvd| 亚洲精品自拍| 不卡一二三区| 日韩一二三区在线观看| 中文字幕色婷婷在线视频| 免费在线观看一区二区三区| 久久女人天堂| 国产视频亚洲| 精品一区二区三区亚洲| 亚洲欧美久久久| 久久香蕉网站| 亚洲无线观看| 亚洲人成在线网站| 91精品福利观看| 99久久精品费精品国产| 国产精品久久久网站| 日韩亚洲精品在线| 成人国产精品一区二区免费麻豆| 亚洲综合色婷婷在线观看| 午夜精品成人av| 69堂精品视频在线播放| 欧美日韩在线观看视频小说| 国产精品久久久久久久久久齐齐 | 国产一区二区三区不卡av| 亚洲永久精品唐人导航网址| 超碰成人av| 91福利精品在线观看| 精品一区三区| 国产在线观看91一区二区三区| 亚洲综合国产| 国产精品毛片久久| 日韩国产成人精品| 久久高清国产| 久久久成人网| 国产成人精品一区二区三区在线| 911亚洲精品| 男人操女人的视频在线观看欧美| 久久国产亚洲精品| 国产一区二区三区四区大秀| 奇米狠狠一区二区三区| 亚洲一区二区毛片| 私拍精品福利视频在线一区| 国产精品xxx在线观看| 亚洲精品伊人| 亚洲欧美日韩国产一区二区| 久久精品亚洲欧美日韩精品中文字幕| 国产精品99久久免费| 日韩欧美2区| 国产精品日韩欧美一区| 91精品亚洲| 色婷婷综合网| 国产一区二区三区网| 国产亚洲欧美日韩精品一区二区三区| 亚洲一级淫片| 爽好多水快深点欧美视频| 欧美特黄一区| 在线日韩电影| 久久美女精品| 极品裸体白嫩激情啪啪国产精品| 黑森林国产精品av| 欧美国产先锋| 国产日韩一区二区三免费高清| 四虎在线精品| 亚洲精品福利| 少妇精品久久久一区二区 | 美女高潮久久久| 色综合www| 亚洲1234区| 精精国产xxxx视频在线播放| 日本高清久久| 激情婷婷欧美| 日韩成人亚洲| 日韩久久电影| 成人日韩在线| 你懂的亚洲视频| 国产精品久久久久久av公交车| 亚洲影视一区| 欧美一区二区三区久久| 欧美久久香蕉| 国产精品色在线网站| 国产精品巨作av| 久久婷婷国产| 深夜福利视频一区二区| 成人日韩精品| 欧美在线资源| 老牛影视一区二区三区| 蜜臀91精品一区二区三区| 中文精品电影| 婷婷久久免费视频| 日韩二区在线观看| 国产精品久久久久久模特| 国产suv精品一区二区四区视频 | 日本欧美大码aⅴ在线播放| 国产精品一区高清| 日韩久久99| 精品国产亚洲一区二区三区在线 | 国产欧美一区二区三区精品酒店| 97精品国产一区二区三区 | yellow在线观看网址| 88xx成人免费观看视频库| 精品在线99| 日韩精品视频中文字幕| 国产精品久久久免费| 91一区二区三区四区| 亚洲夜间福利| 亚洲九九精品| 久久99久久人婷婷精品综合| 国产欧美一区二区三区精品酒店 | 日本一区中文字幕| 久久精品国产99国产| 一区二区三区四区日本视频| 欧美日韩一二| 亚洲97av| 成人午夜亚洲| 在线综合视频| 欧美日韩在线精品一区二区三区激情综合| 国产精品亚洲四区在线观看| 日韩av免费大片| 在线国产一区| 国产亚洲精品精品国产亚洲综合| 加勒比视频一区| 91精品国产调教在线观看| 亚洲午夜免费| 麻豆精品在线视频| 欧美~级网站不卡| 日韩激情啪啪| 伊伊综合在线| 中文字幕一区二区三区四区久久| 欧美国产先锋| 性色一区二区| 欧美91在线|欧美| jiujiure精品视频播放| 91精品福利观看| 欧美不卡在线| 国产欧美日韩一区二区三区在线| 久久高清精品| 欧美日韩夜夜| 激情自拍一区| 久久亚洲资源中文字| 丝袜美腿一区二区三区| 国产一区二区三区四区| 丝袜国产日韩另类美女| 国产成人精品免费视| 五月亚洲婷婷 | 亚洲欧美日本日韩| 91欧美在线| 亚洲精品观看| 欧美精品一二|