Mybatis 代理dao的开发 基于注解

mybatis带表字段注释生成dao层 mybatis带表字段注释生成dao层,pojo,mapper.xml,代码生成 立即下载

代理Dao的开发需要遵守的规范:
A:将映射文件和接口放在同一个包中并文件的主文件名相同
B:映射文件的命名空间必须是接口的完整包名+接口名,即接口地址
C:映射文件中的mappedstatementId的值必须和接口的方法名相同
D:输入映射参数的类型必须和接口中方法的形参的数据类型相同
E:输出映射参数的类型必须和接口中方法返回值的数据类型相同(如果返回单个对象类型必须相同,如果返回集合则要求集合中元素的数据类型和输出映射的类型相同)
注意:映射文件的注册方式有两种:
A:在mybatis配置文件中逐个注册



B:批量注册


例子
PersonDao类

public interface PersonDao {

    @Insert("insert into t_person values(null,#{name},#{age},#{sex},#{birthday})")
    void add(Person person) throws Exception;

    @Delete("delete from t_person where id=#{id}")
    void delete(int id);

    @Update("update t_person set name=#{name},age=#{age},sex=#{sex},birthday=#{birthday} where id=#{id}")
    void update(Person person);

    @Select("select *from t_person where id=#{id}")
    Person getPersonById(int id)throws Exception;

    @Select("select *from t_person")
    List<Person> getPersons()throws Exception;

    @Select("select *from t_person where name like '%' #{condition} '%'")
    List<Person> getPersonsByLike(String condition)throws Exception;


    @Select("select *from t_person where id=#{id}")
    Map getMapById(int id)throws Exception;

    @Select("select *from t_person")
    List<Map<String,Object>> getMaps()throws Exception;

    @Select("select *from t_person where name like '%' #{condition} '%'")
    List<Map<String,Object>> getMapsByLike(String condition)throws Exception;

}

mybatis的配置文件


/* 在基于注解的单表操作中,不支持函数重载,否则报函数名已经存在的错误。
 *  
 * 在基于注解的操作中,如果使用SqlSession的selectOne(),selectList(),insert(),update(),delete()等
 * 方法时,需要注意的是:statement的取值必须是:接口的完整包名+接口名+当前操作方法的名称。
 */


/**
     * 当数据库表的列名和实体的属性名不匹配时则无法完成自动属性的注入,解决办法:
     * A:给select语句查询的列起别名
@Select("select p_id as id ,p_name as name,p_age as age,p_sex as  sex,p_birthday as birthday from t_person where p_id=#{id}")


     * B:手工进行映射关系的匹配
        @Results(
            {
                @Result(column="p_id",property="id"),   
                @Result(column="p_name",property="name"),   
                @Result(column="p_age",property="age"), 
                @Result(column="p_sex",property="sex"), 
                @Result(column="p_birthday",property="birthday")    
            }
    )
*/
public class PersonDaoTest {

    private PersonDao personDao;
    @Before
    public void setUp() throws Exception {
        **SqlSession sqlSession=MyBatisUtils.getSqlSession();

        personDao=sqlSession.getMapper(PersonDao.class);**
    }

    @Test
    public void testAdd() {
        try {
            this.personDao.add(new Person("小美", 18,"女", new Date()));
            System.out.println("插入成功!");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void testDelete() {
        int id=5;
        this.personDao.delete(id);
        System.out.println("数据删除成功!");
    }

    @Test
    public void testUpdate() {
        int id=5;
        try {
            Person person=this.personDao.getPersonById(id);
            if(person!=null){
                person.setName("媚儿");
                person.setAge(20);

                this.personDao.update(person);
                System.out.println("修改成功!");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void testGetPersonById() {
        int id=1;
        try {
            Person person=this.personDao.getPersonById(id);
            System.out.println(person);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void testGetPersons() {
        try {
            List<Person> persons=this.personDao.getPersons();
            System.out.println(persons);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void testGetPersonsByLike() {
        String condition="小";
        try {
            List<Person> persons=this.personDao.getPersonsByLike(condition);
            System.out.println(persons);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void testGetMapById() {
        int id=1;
        try {
            Map<String,Object> map=this.personDao.getMapById(id);
            System.out.println(map);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void testGetMaps() {
        try {
            System.out.println(this.personDao.getMaps());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void testGetMapsByLike() {
        String condition="小";
        try {
            List<Map<String,Object>> maps=this.personDao.getMapsByLike(condition);
            System.out.println(maps);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
BOM 数据模型设计 字段名数据类型必填说明物料编码 (Part Number)字符串是唯一标识,主键。建议包含分类前缀(如STD-GEN-CUS-物料名称 (Part Name)字符串是版本 (Revision)字符串是如AB1.0,与编码组合构成唯一实例。状态 (Status)枚举是设计中(Draft)已发布(Released)已归档(Archived)已作废(Obsoleted)类型 (Type)枚举是专用件(Custom)借用件(Borrowed)通用件(Generic)标准件(Standard) 阅读详情

相关推荐

面板数据门槛归回分析,xthreg的安装,xthreg2安装包

我用的是Stata17,数据是不平衡的面板数据,需要用到xthreg2,虽然我找到了xthreg2.ado,但是还需要安装xthreg,因为运行xthreg2需要xthreg包顺带安装的lxthreg.mlib文件。但是!我后来发现还是不行,最后是去买了一个真正能用到xthreg2的lxthreg.mlib文件,才可以运行。

weixin_55252589的博客 1万+

八十、MyBatis框架DAO代理

文章目录 DAO代理实现数据库操作 parameterType 一个简单参数 使用@Param 使用对象 DAO代理实现数据库操作 1、去掉Dao接口实现类 2、getMapper获取代理对象 只需调用 SqlSession 的 getMapper()方法,即可获取指定接口的实现类对 象。该方法的参数为指定 Dao 接口类的 class 值。 SqlSession session = factory.openSession(); StudentD...

879

从零到一:基于Rocky Linux 9的Kubernetes高可用集群部署实战

本文提供了一份基于Rocky Linux 9操作系统,从零开始部署Kubernetes高可用集群的完整实战指南。详细讲解了包括系统初始化、容器运行时配置、使用kubeadm工具进行集群初始化、节点加入以及Calico网络插件安装在内的核心步骤,并针对国内网络环境提供了镜像加速等优化方案,旨在帮助读者构建一个稳定可靠的生产级K8s环境。

weixin_29197835的博客 135

Mybatis的入门、接口代理实现dao以及注解开发

本文介绍了Mybatis的快速入门使用、接口代理实现dao以及注解开发

郝的博客 1220

F5 shape最新版逆向分析(美西南、xbk)

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,如有侵权,请联系作者立即删除。今天来简单秀下传说中的f5 shape,这是一个数一数二的盾,jsvmp+顶级风控,就算技术实力再强,也是需要花很多时间去摸索的,如果您遇到了这个盾又没有太多的时间去搞,欢迎来找我们。

mature的博客 3651

鸿蒙实战开发教程-注册登录页面

在密码输入框中,只要设置TextInput的类型就可以实现带眼睛logo的密码输入框效果:

2401_82546228的博客 3559

Mybatis注解实现DAO层

接口层 public interface IOrdersDao { //查询所有订单信息 @Select("select o.id,o.ordernum,p.productname,p.productprice,o.ordertime,o.orderstatus " + "from orders o ,product p where o.producti...

JGCS的博客 3203

[Unity3D]水族馆游戏教程四

文章目录0.接上篇1.速度控制器2.修改FishAI3.修改后的效果4.总结 0.接上篇 上一篇,实现了鱼AI的随机游动、自动转向,并且学习了如何分析调试过程中遇到的报错。 本篇将继续优化鱼AI。 1.速度控制器 上一篇虽然实现了鱼的随机游动,但是可以看到,鱼在转向的时候,会显得很突然。因此先要解决这个问题。 我们的思路是,让鱼在刚转向的时候,速度由慢到快,等到游动到快要到达目标点的时候,速度减慢...

延澈左的专栏 1037

13--MyBatis-使用注解方式实现MyBatis

好处:扩展性好,分层开发中,上层不用管具体的实现,大家都遵循共同的标准,使得开发变得容易。②,在mybatis.cfg.xml里面配置UserMapper.xml。5,在mybtais.cfg.xml里面配置DAO。①,创建UserMapper.xml。2,在核心配置文件中 导入。③,修改UserDAO。①,修改UserDAO。3,创建DeptDAO。

m0_61523691的博客 964

Apollo Planning2.0决策规划算法代码详细解析 (1):环境搭建

1、官方提供连接:git clone https://github.com/ApolloAuto/application-pnc.git。此外,也更新了dreamview对pnc的支持,使得调试更加方便。apollo开源团队近期更新了planning版本,对代码进行了一定程度上的重构。(2)进入docker,并编译整个工程:./apollo.sh build_dbg。下载项目环境后使用aem进行环境配置;2、有一定基础建议直接拉取最新代码,自己手动进行编译。(1)环境安装: ./dev_start.sh。

自动驾驶Player的博客 1839

地平线旭日X3开发板--使用Opencv显示CSI摄像头例程

但是从libsrcampy获取的摄像头图像格式是NV12,无法直接在opencv上显示或者处理,调试过程发现旭日派无法直接用opencv的VideoCapture()调用CSI摄像头,需要使用opencv来做开发的小伙伴可以做个参考,效果如下图所示。需要使用libsrcampy库来获取CSI摄像头图像,为了能够使用opencv的API来处理图像,需要增加NV12转化成bgr像素格式的函数。opencv显示图像.png。

bingdund的博客 541

Mybatis使用注解方式配置

目录1 介绍2 初始化工程2.1 导包2.2 导配置3 使用注解增删改查3.1 环境准备3.1.1 建库建表3.1.2 创建Student实体类3.1.3 创建StudentDao接口3.1.4 配置映射关系3.2 查询演示3.3 新增演示3.4 修改演示3.5 删除演示3.6 #{}与${}的区别4 SQL功能类4.1 介绍4.2 环境搭建4.2.1 创建表4.2.2 创建实体类4.2.3 定义UserSQL功能类4.2.4 定义UserDao接口4.3 查询@SelectProvider4.3.1 普通

赵广陆 4700

UE5实现物体高亮描边效果(含UE相关源码浅析)

UE5实现物体高亮描边效果

专注GIS开发 7334

Mybatis注解开发和编写dao实现类的方式

三:SqlMapConfig.xml中用注解,此处应该用class属性指定被注解的dao全限定类名。指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件。//4.使用SqlSession创建Dao接口的代理对象。//3.使用工厂生产SqlSession对象。//1.使用工厂创建SqlSession对象。@author: 牛哄哄的柯南。@author: 牛哄哄的柯南。@author: 牛哄哄的柯南。@author: 牛哄哄的柯南。//3.使用工厂创建dao对象。

2401_88972388的博客 836

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

mybatis黑马:注解开发 单表CRUD操作(代理Dao方式)

注解开发需要删除IUserDao.xml文件(即mappers文件)。 以下是注解的形式: 省略User.java IUserDao.java CRUD一共有四个注解 @Select @Insert @Update @Delete package com.jh.dao; import com.jh.domain.User; import org.apache.ibatis.annotatio...

JH灰色的博客 292

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring整合Mybatis(注解方式完整过程,摒弃MyBatis配置文件)

文章目录Spring整合Mybatis(完整分析)1.思路:从配置文件入手2.环境搭建两种开发方式梳理1.传统dao开发方式.2.代理开发方式(重点掌握)Spring整合Mybatis(注解方式完整过程,摒弃MyBatis配置文件)1.创建Java项目2.MyEclipse使用Spring Facets导入依赖3.添加其它依赖4.创建三层结构5.实体类6.Mapper接口(Dao)7.Servic...

yokoのBlog 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Mybatis基于注解的开发模板及案例(一)

本文介绍了基于注解开发的文件结构,总结了开发的模板,并举出一个单表查询的具体案例。

2303_77275067的博客 1107

mybatis的三种开发方式

使用动态代理机制,dao层接口化,底层自动创建代理对象代替dao对象创建SqlSession,并且自动与xml文件进行sql配对。使用动态代理机制,dao层接口化,底层自动创建代理对象代替dao对象创建SqlSession,并且自动从注解中提取sql。dao层对象手动创建SqlSession对象,手动实现方法,并和xml文件中的标签进行sql配对。注意,这里代理对象管理的SqlSession匹配方法,规定了方法的id必须为方法名。其中,第三种代理对象 + 注解最为常见。mapper代理对象 + 注解。

WLKUYM的博客 214

SSM之MyBatis的Dao层实现、文件深入和多表操作

采用Mybatis的代理开发方式实现DAO层的开发,这种方式是我们后面进入企业的主流。Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。Mapper接口开发需要遵循以下规范:1、Mapper.xml文件中的namespace与mapper接口的全限定名相同2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同。

qq_46130027的博客 673

Mybatis的dao层实现/注解开发(基础)

(在终端执行了几条命令,下载了一些东西,我觉得这个是主要解决问题的),最终成功加载驱动(不需要自己手动点什么连接,账号密码端口什么的写好,Mybatis会配置好)1.限定名相同,这里要修改的是蓝底处,修改为了路径com.ysx.dao.UserMapper。2.修改核心配置文件sqlMapConfig,将映射文件改成了加载映射关系,会扫描指定的包。1. JUnit测试配置问题,MyBatis Mapper XML路径问题。(注意写对表修改的操作后爆红字正常,去表中刷新一下可以看到成果)配置(这里问ai的)

2301_81088399的博客 249

设计模式之代理模式(模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景)

但在高体量、高并发的业务场景下,每一次的压测优化,性能提升,都像在研究一道数学题一样,反复的锤炼,压榨性能。不断的深究,找到最合适的设计。这样的案例场景在实际的业务开发中其实不多,因为这是将这种思想运用在中间件开发上,而很多小伙伴经常是做业务开发,所以对Spring的bean定义以及注册和对代理以及反射调用的知识了解的相对较少。2:使用过的一些中间件例如;RPC框架,在拿到jar包对接口的描述后,中间件会在服务启动的时候生成对应的代理类,当调用接口的时候,实际是通过代理类发出的socket信息进行通过。

优快云_LiMingfly的博客 693

Mybatis2

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34054931的博客 82

java学习day46(Mybatis)mybatis基本使用

在加载时已经把常用的数据类型注册了别名,从而我们在使用时可以不写包名, 而我们的是实体类并没有注册别名,所以必须写全限定类名。一样,如果注册过类型别名的,可以直接使用别名。传递查询条件 ,查询条件是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。同时,当是实体类名称是,还有一个要求,实体类中的属性名称必须和查询语句中的列名保持一致,否则无法实现封装。代表参数的类型,因为我们要传入的是一个类的对象,所以类型就写类的全名称。

gaosong0623的博客 461

MyBatis的基本应用

MyBatis的基本应用、MyBatis缓存、MyBatis插件、MyBatis注解开发

摸魚散人的博客 1361

MyBatis代理开发:简化数据访问层(DAO)的实现

MyBatis代理开发是一种简化数据访问层开发的方法,通过使用接口和注解,我们可以定义数据库操作方法并自动执行对应的SQL语句。代理开发避免了手动编写大量的SQL语句,使得数据库操作的实现更加简洁和可维护。

weixin_62079735的博客 824

Mybatis基础回顾和高级应用

本文摘要: Mybatis是一款基于ORM的半自动轻量级持久化框架,支持定制化SQL和高级映射。文章详细介绍了Mybatis的环境搭建、CRUD操作、核心配置文件(sqlMapConfig.xml)的编写,以及传统DAO层开发与代理开发方式的对比。重点讲解了Mybatis的复杂映射关系(一对一、一对多、多对多)的实现方式,包括XML配置和注解开发两种方法。此外,还深入分析了Mybatis的缓存机制(一级缓存和二级缓存)及其工作原理,并介绍了如何整合Redis实现分布式缓存。最后,简要说明了Mybatis插件

guslegend的博客 1288
上一篇: Hibernate 注解的方式进行查询
下一篇: MyBatis 多对一关系
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值