电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:2日期: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 數據庫
相關文章:
主站蜘蛛池模板: Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 烟台螺纹,烟台H型钢,烟台钢材,烟台角钢-烟台市正丰金属材料有限公司 | 中控室大屏幕-上海亿基自动化控制系统工程有限公司 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 全自动变压器变比组别测试仪-手持式直流电阻测试仪-上海来扬电气 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | 南京和瑞包装有限公司 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 影像测量仪_三坐标测量机_一键式二次元_全自动影像测量仪-广东妙机精密科技股份有限公司 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 聚丙烯酰胺_厂家_价格-河南唐达净水材料有限公司 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 烟台螺纹,烟台H型钢,烟台钢材,烟台角钢-烟台市正丰金属材料有限公司 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 低温等离子清洗机(双气路进口)-嘉润万丰 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 国标白水泥,高标号白水泥,白水泥厂家-淄博华雪建材有限公司 |