首页 > 其他分享 >【SSM】mybatis的增删改查

【SSM】mybatis的增删改查

时间:2024-12-01 23:33:06浏览次数:10  
标签:mapper int List 改查 SSM user mybatis id User

目录

代理Dao方式的增删改查

1. 创建项目

$$1. 在sql.xml里增加日志代码以及user的mapper资源。

$$ 2. 在usermapper里引入接口。

 $$3. 在测试类中引入以下代码,并修改其中名字。

 $$ 4. 实例对象User.java里属性要与表中列严格对应。

2. 查询

1>. 查询所有

2>. 通过id查询

3>. 通过username查询

4>. 分页查找

5>.不同类型查询

6>.计数

3. 插入

4. 修改

5. 删除


代理Dao方式的增删改查

1. 创建项目

这里以上一博客中配置batis创建的user表为例。

创建UserDao接口,创建User实例对象,创建mybatis.xml和sql.xml mapper类以及测试类

$$1. 在sql.xml里增加日志代码以及user的mapper资源。

代码:

<settings>
        <setting name="cacheEnabled" value="true"/>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
 <mapper resource="mapper/UserMapper.xml"></mapper>

$$ 2. 在usermapper里引入接口。

 $$3. 在测试类中引入以下代码,并修改其中名字。

代码:

 private InputStream in = null;
    private SqlSession session = null;
    private UserDao mapper = null;

    @Before  //前置通知, 在方法执行之前执行
    public void init() throws IOException {
        //加载主配置文件,目的是为了构建SqlSessionFactory对象
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //通过SqlSessionFactory工厂对象创建SqlSesssion对象
        session = factory.openSession();
        //通过Session创建UserDao接口代理对象
        mapper = session.getMapper(UserDao.class);
    }

    @After  //@After: 后置通知, 在方法执行之后执行 。
    public void destory() throws IOException {
        //释放资源
        session.close();
        in.close();
    }

 $$ 4. 实例对象User.java里属性要与表中列严格对应。

 

生成访问器与更改器以及toString()。

2. 查询

1>. 查询所有

<!--  id后跟方法的名字  -->
<!--    parameterType 入参的类型-->

        resultType返回结果类型

<select id="findAll" resultType="com.qcby.entity.User">
        select * from user;
    </select>

        在接口那写相应的方法(找到的有很多,所以用List接,因为返回的是对象。List<User>)

List<User> findAll();

 测试:

        mapper.findAll().var回车

@Test
    public void findAll(){
        List<User> users = mapper.findAll();
        for(User user:users){
            System.out.println(user.toString());
        }
    }

2>. 通过id查询

        d是int型,故入参类型为int型,返回实例对象。

<select id="findById" resultType="com.qcby.entity.User" parameterType="int">
        select * from user where id=#{id}
    </select>

        因为通过id查,最后输出的对象只有一个,所以不用List接,用User对象接就好。 

User findById(int id);

测试:

@Test
    public void findById(){
        User user=mapper.findById(1);
        System.out.println(user.toString());
    }

3>. 通过username查询

        入参类型为String类,java中,String在java/lang包下。

<select id="findByUserName" resultType="com.qcby.entity.User" parameterType="java.lang.String">
        select * from user where username=#{username}
    </select>

        可能有很多重名的,所以用List接。

List<User> findByUserName(String username);

测试:

@Test
    public void findByUserName(){
        List<User> users = mapper.findByUserName("熊大");
        for(User user:users){
            System.out.println(user.toString());
        }

    }

4>. 分页查找

        当数据库数据量比较大时,前台分页显示

        select * from user limit pageSize offset pageStart

<select id="findPage" resultType="com.qcby.entity.User" parameterType="int">
        select * from user limit #{pageSize} offset #{pageStart}
    </select>

        两个都是int型,故入参为int型。

在这里,需要用注解区分两个参数

List<User> findPage(@Param("pageSize") int pageSize,@Param("pageStart") int pageStart);

测试:

@Test
    public void findPage(){
        int pageSize=2;//每页显示的数据量
        int pageIndex=1;//当前是第1页
        int pageStart = pageSize*(pageIndex-1);
        List<User> users = mapper.findPage(pageSize, pageStart);
        for(User user:users){
            System.out.println(user.toString());
        }
    }

5>.不同类型查询

        不同类型时,入参为实例对象。

<select id="findByUserNameAndId" resultType="com.qcby.entity.User" parameterType="com.qcby.entity.User">
        select * from user where username=#{username} and id=#{id}
    </select>
List<User> findByUserNameAndId(User user);

测试:

 @Test
    public void findByUserNameAndId(){
       User user=new User();
       user.setId(1);
       user.setUsername("老王");
        List<User> users = mapper.findByUserNameAndId(user);
        for(User u:users){
            System.out.println(user.toString());
        }
    }

6>.计数

这里不用传参,结果为int型。

<select id="getCount" resultType="int">
        select count(*) from user;
    </select>
int getCount();

测试:

 @Test
    public void getCount(){
        System.out.println(mapper.getCount());
    }
    

3. 插入

传参为实例对象,不需要输出结果。

<insert id="insert" parameterType="com.qcby.entity.User">
        insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
    </insert>
int insert(User user);

测试:

在实例对象类里,生成构造器(不包含id)

注意!!需要session事务提交。

@Test
    public void insert(){
        User user=new User("aa",new Date(),"男","保定");
        mapper.insert(user);
        session.commit();//事务提交
    }

4. 修改

同样,修改也不需要输出结果。

<update id="update" parameterType="com.qcby.entity.User">
        update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
    </update>
int update(User user);

测试:

在实例对象类里,生成构造器(包含id)。

注意!!需要session事务提交。

 @Test
    public void update(){
        User user=new User(5,"bb",new Date(),"男","保定");
        mapper.update(user);
        session.commit();
    }

5. 删除

                删除靠 id,因此入参类型为int型。

<delete id="delete" parameterType="int">
        delete from user where id=#{id}
    </delete>
int delete(int id);

测试:

注意!!需要session事务提交。

@Test
    public void delete(){
        mapper.delete(6);
        session.commit();
    }

标签:mapper,int,List,改查,SSM,user,mybatis,id,User
From: https://blog.csdn.net/m0_75163045/article/details/144166612

相关文章

  • ssm电动车租赁网站(10264)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • ssm毕设银行客户关系管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今金融市场竞争日益激烈的环境下,银行面临着诸多挑战与机遇。随着金融科技的迅猛发展,客户对于银行服务的期望不断提高,不仅要求便捷、高效,更注......
  • ssm毕设缘来有交友平台系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在现代社会,人们的生活节奏加快,社交圈子相对固定,人际交往的范围受到了一定的限制。传统的交友方式往往依赖于线下的社交活动或者熟人介绍,这种方式......
  • ssm毕设医院住院管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着现代医疗行业的不断发展,医院的规模和服务内容日益复杂。传统的住院管理方式多依赖手工操作和简单的纸质记录,这种方式效率低下且容易出错。在......
  • ssm毕设沂州市景点旅游app程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景沂州市拥有丰富的旅游资源,如独特的地质奇观(地下大峡谷等)、深厚的历史文化底蕴(王羲之故里等)以及动人的红色文化(沂蒙红嫂等)[1] 。随着旅游业的发......
  • Java毕设之基于Uniapp+ssm基于微信小程序的社区团购购购物商城
    《[含文档+PPT+源码等]精品微信小程序基于Uniapp+ssm基于微信小程序的社区团购》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!软件开发环境及开发工具:开发语言:Java后......
  • 基于Uniapp+ssm基于微信小程序的宠物寄养平台的设计与实现
    《[含文档+PPT+源码等]精品微信小程序基于Uniapp+ssm基于微信小程序的宠物寄养平台的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!软件开发环境及开发工具:......
  • (附源码)SSM阿迪达斯服装销售管理系统-计算机毕设 33299
    SSM阿迪达斯服装销售管理系统摘要在当今数字化、快节奏的时代,高效的商业运营和精准的市场策略已成为企业成功的关键。特别是对于像阿迪达斯这样的国际知名服装品牌,面对日益激烈的市场竞争和消费者需求的多样化,拥有一套先进的销售管理系统显得尤为重要。为此,我们精心研......
  • 基于SSM的办公自动化系统【附源码+文档】
    ......
  • 基于SSM的在线视频播放器【附源码+文档】
    ......