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

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

mybatis實現mapper代理模式的方式

瀏覽:37日期:2023-10-19 07:16:02

今晚繼續復習mybtis以根據id值查詢單條數據為例編寫SqlMapConfig.xml文件

<configuration> <!-- 使用mybatis需要的數據源和事務配置,后續如果整合spring之后,將不再需要 --> <environments default='development'> <!-- 配置數據源和事務 --> <environment id='development'> <!-- 配置事務管理,將事務管理交給mybatis管理 --> <transactionManager type='JDBC' /> <!-- 配置數據源 --> <dataSource type='POOLED'> <property name = 'driver' value = 'com.mysql.jdbc.Driver' /> <property name='url' value='jdbc:mysql://localhost:3306/db_shop? useUnicode=true&amp;characterEncoding=utf-8'/> <property name='username' value='root'/> <property name='password' value=''/> </dataSource> </environment> </environments> <!-- 加載**.xml配置文件 --> <mappers> <mapper resource='product.xml'/></mappers> </configuration>

編寫失血模型對象:Product,最好字段名和數據庫里面的字段名一直

/**** <p>Title: Product</p> * <p>Description: 商品類失血模型</p> * @author Alon * @date 2020年9月27日 下午6:51:57 * @version 1.0 */ public class Product { private int p_id; private String name; private int p_number; private double price; private String add_time; public Product(int p_id, String name, int p_number, double price, String add_time) { super(); this.p_id = p_id; this.name = name; this.p_number = p_number; this.price = price; this.add_time = add_time; }public Product() { super(); } public int getP_id() {return p_id; } public void setP_id(int p_id) {this.p_id = p_id; }public String getName() { return name; } public void setName(String name) { this.name = name; } public int getP_number() {return p_number; } public void setP_number(int p_number) { this.p_number = p_number; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getAdd_time() { return add_time;}public void setAdd_time(String add_time) { this.add_time = add_time; }@Override public String toString() { return 'Product [p_id=' + p_id + ', name=' + name + ', p_number=' + p_number + ', price=' + price + ', add_time=' + add_time + ']'; } }

編寫單個映射關系的sql.xml:product.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'> <!-- 映射的sql文件 namespace:命名空間,可以理解成將部分的sql語句進行隔離。到后面的mapper代理方式將有更 加重要的作用 --> <mapper namespace='test'> <!--select:表示要執行的查詢語句 id:給這個查詢語句取一個名字,唯一的,java中要調用的使用。 parameterType:輸入參數的數據類型 resultType:輸出參數的數據類型,一般綁定成model的對象 #{value}:表示用來和占位符一樣,用來接受輸入的參數值。 --> <select parameterType='java.lang.Integer' resultType='com.woniuxy.model.Product'> SELECT * FROM t_product WHERE p_id = #{value} </select> </mapper>

編寫java代碼進行測試執行sql語句并得到結果

/**** <p>Title: MybatisDemo1</p> * <p>Description: 查詢數據的demo</p> * @author Alon * @date 2020年9月27日 下午7:05:32 * * @version 1.0 */ * public class MybatisDemo1 { * public static void main(String[] args) throws IOException { * new MybatisDemo1().queryById(); } * public void queryById() throws IOException { * //1、讀取到SqlMapConfig.xml文件的流 String path = 'SqlMapConfig.xml'; * InputStream config = Resources.getResourceAsStream(path);//創建會話工廠,同時將SqlMapConfig.xml里面的數據放到工廠中 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); //開啟會話 SqlSession sqlSession = factory.openSession(); /** 第一個參數:要執行哪個sql語句的參數,一般命名空間.id值 * 第二個參數:傳入填充#{value}的傳入參數值。 */ Object obj = sqlSession.selectOne('test.findById', 1); System.out.println(obj); } }

進行模糊查詢:查詢出多條結果集

<!-- 在原有的xml文件中進行配置即可,不需要新建,之前的也已經在SqlMapConfig.xml文件中進行了配 置 --> <select parameterType='java.lang.String' resultType='com.woniuxy.model.Product'> SELECT * FROM t_product WHERE name like '%${value}%' </select> public void queryByName() throws Exception{ String path = 'SqlMapConfig.xml'; //獲取流對象 InputStream config = Resources.getResourceAsStream(path); //獲取會話工廠 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); //開啟會話 SqlSession sqlSession = factory.openSession(); /** 因為執行結果有多條語句,那么必須使用selectList */ List<Object> list = sqlSession.selectList('test.queryByName', '旺仔'); //迭代 System.out.println(list); }

新增語句

<!-- 新增一條數據 parameterType:傳入參數的數據類型,用失血模型對象即可。 --> <insert parameterType='com.woniuxy.model.Product'> INSERT INTO t_product(name,p_number,price) value(#{name},#{p_number},# {price}); </insert>

/****<p>Title: insert</p> *<p>Description: 新增數據</p> * @throws Exception * */ public void insert() throws Exception{ String path = 'SqlMapConfig.xml'; * //獲取流對象 * InputStream config = Resources.getResourceAsStream(path); //獲取會話工廠* SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); * //開啟會話 * SqlSession sqlSession = factory.openSession();* Product prod = new Product();* prod.setName('雪碧'); * prod.setP_number(10); * prod.setPrice(3.0);* int row = sqlSession.insert('test.insertProduct', prod); System.out.println(row); sqlSession.commit(); sqlSession.close(); }

mapper代理的方式進行講解增、刪、改、查(重點)步驟1:創建對應的Mapper接口,和之前的dao接口一致步驟2:編寫對應的xxmapper.xml配置文件。有要求1)mapper標簽里面的namespace:必須寫成對應的Mapper接口的全路徑名2)sql語句里面的id:必須和接口中對應方法的名稱一致。3)sql語句里面的parameterType:必須要和接口中方法的形式參數數據類型一致4)sql語句里面的resultType:必須和接口中方法的返回值數據類型一致步驟3:將編寫好的**mapper.xml文件在SqlMapConfig.xml文件中加載步驟4:編寫實現類,并在這里直接測試別名和mapper映射詳解設置別名在mybatis配置文件中,別名是一直存在的,實際上在框架中已經存在一些默認的別名。比如java.lang.String對應的別名:String,java.lang.Integer對應的別名:int在開發中,一般mapper.xml配置文件中的parameterType和resultType往往對應的名稱需要寫上model的全路徑,而且還是多次被重復使用,可以選擇給該路徑取一個別名。用別名來替換比較復雜的全路徑名以掃描包的形式進行配置自定義的POJO類(重點)自定義POJO類,一般指的是高級查詢,在想要的數據和傳入的條件不再一張表中,通過表所創建的失血模型model已經不能夠滿足傳入參數的需求了,這個時候,就需要使用自定義的POJO類因為一個失血模型已經不能夠滿足查詢輸入參數的要求了,所以進行擴展,創建一個UserCustom類,里面包含user對象聲明和userInfo對象聲明

以上就是mybatis實現mapper代理模式的方式的詳細內容,更多關于mybatis mapper代理模式的資料請關注好吧啦網其它相關文章!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 西门子代理商_西门子变频器总代理-翰粤百科 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 算命免费_生辰八字_免费在线算命 - 卜算子算命网 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 韦伯电梯有限公司| 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 新密高铝耐火砖,轻质保温砖价格,浇注料厂家直销-郑州荣盛窑炉耐火材料有限公司 | 南昌旅行社_南昌国际旅行社_南昌国旅在线 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 陕西安闸机-伸缩门-车牌识别-广告道闸——捷申达门业科技 | 桐城新闻网—桐城市融媒体中心主办| 盘装氧量分析仪-防爆壁挂氧化锆分析仪-安徽吉帆仪表有限公司 | 顶呱呱交易平台-行业领先的公司资产交易服务平台 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 成都租车_成都租车公司_成都租车网_众行宝 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 浙江宝泉阀门有限公司|