mybatis增删改查

前面的mybatis 入门已经介绍了一些基础的mybatis
现在我们来通过mybatis的代码 实现对数据库的增删改查操作

首先 我们建立的的dao包中 有对数据库操作的持久化代码

dao层中 增删改查代码块的xml 再结合接口与 resource文件下的mybatis-config.xml
实现对数据库执行操作(当然还有测试类 和Util类)

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--        接口的路径  建立与接口的连接   面向接口编程 获取了接口 我们就能使用接口的实现类-->
<mapper namespace="com.mumu.dao.DaoMybatis">

    <select id="getAllMybatis" resultType="com.mumu.entity.Mybatis">
        select  * from mybatis.user;

    </select>

<!--        接口中 方法的名字           返回结果类型-->
      <select id="getIdMybatis"       resultType="com.mumu.entity.Mybatis">
        select  * from mybatis.user where id=#{id}

    </select>


<!--         接口中 方法的名字           参数类型-->
    <insert id="addMybatis" parameterType="com.mumu.entity.Mybatis">
        insert  into mybatis.user(id, name, pwd) VALUES(#{id},#{name},#{pwd});

    </insert>



    <delete id="delete" parameterType="com.mumu.entity.Mybatis">
        delete from mybatis.user where id=#{id}
    </delete>



    <update id="update" parameterType="com.mumu.entity.Mybatis">

    update mybatis.user set name=#{name} , pwd=#{pwd} where id=#{id}

    </update>

    <select id="getlike" resultType="com.mumu.entity.Mybatis">
    select  * from mybatis.user where name like concat('%',#{name},'%')
    </select>

    <update id="maptest" parameterType="map">

    update mybatis.user set name=#{name} where id=#{id};

    </update>


    <insert id="adduser" parameterType="map">

    insert  into  mybatis.user(id, name, pwd) value(#{id},#{name},#{pwd});

    </insert>



</mapper>

注意 模糊查询
要防止sql注入问题

或者写成 where name like “%” #{name} “%”

接口代码

package com.mumu.dao;

import com.mumu.entity.Mybatis;

import java.util.List;
import java.util.Map;

public interface DaoMybatis {


    //查所有
    List<Mybatis> getAllMybatis();

    // 根据id查
    Mybatis getIdMybatis(int id);

    //添加
    void addMybatis(Mybatis mybatis);

    //删除
    void delete(int id);

    //修改
    void update(Mybatis mybatis);
    
    //模糊查询
    List<Mybatis> getlike(String str);

    
    //用map作为参数 来修改
    void maptest(Map<String,Object> map);


    //用map作为参数来添加
    void adduser(Map<String,Object> map);

}

测试类

package com.mumu.dao;

import com.mumu.entity.Mybatis;
import com.mumu.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserDaoTest {



    @Test
    public void test01(){

        SqlSession sqlSession = MybatisUtil.getSqlSession();
        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);
        List<Mybatis> allMybatis = mapper.getAllMybatis();

        for (Mybatis user:allMybatis){

            System.out.println(user);

        }
        sqlSession.close();
    }

    @Test
    public  void test02(){

        SqlSession sqlSession = MybatisUtil.getSqlSession();
        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);
        Mybatis idMybatis = mapper.getIdMybatis(11);
        System.out.println(idMybatis);
        sqlSession.close();


    }



    @Test
    public  void test03(){

        SqlSession sqlSession = MybatisUtil.getSqlSession();

        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);

        mapper.addMybatis(new Mybatis(12,"迪丽热巴","132456"));

        sqlSession.commit();
        sqlSession.close();

    }


    @Test
    public void test04(){

        SqlSession sqlSession = MybatisUtil.getSqlSession();
        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);
        mapper.delete(2);

        sqlSession.commit();
        sqlSession.close();
    }


    @Test
    public void test05(){

        SqlSession sqlSession = MybatisUtil.getSqlSession();
        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);
        mapper.update(new Mybatis(12,"马化腾","123456"));
        sqlSession.commit();
        sqlSession.close();

    }



    @Test
    public void test06(){

        SqlSession sqlSession = MybatisUtil.getSqlSession();
        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);
        List<Mybatis> getlike = mapper.getlike("马");
        for (Mybatis user : getlike){

            System.out.println(user);

        }
    }

    @Test
    public void test07(){

        SqlSession sqlSession = MybatisUtil.getSqlSession();
        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);

        Map map=new HashMap();
        Object s = map.put("name", "王思聪1");
        map.put("id",20);

        mapper.maptest(map);
        sqlSession.commit();
        sqlSession.close();


    }

    @Test
    public  void test08(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();

        DaoMybatis mapper = sqlSession.getMapper(DaoMybatis.class);

        Map map=new HashMap();
        map.put("id",28);
        map.put("name","xixsihaha45h");
        map.put("pwd","45618989");

        mapper.adduser(map);

        sqlSession.commit();
        sqlSession.close();


    }


}

问题点: 用update 修改的时候 必须修改把全部值给写出来(因为传入的是一个对象 也就是new构造器) 那么怎么才能实现 修改部分的属性呢?注意 这个问题在插入add添加处也存在

解决:使用Map 能很好的解决这一问题 用map的(key,value) 结合它的put方法 将需要的对象添加上 可以很方便的修改 或添加部分值

Map的使用

为了方便 我们的数据库相关信息 我们可以用个.properties文件来进行配置
写在resource 文件下

代码

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=0218

而 mybatis-config.xml 的代码

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--    核心配置文件-->
<configuration>

<!--        引入外部配置文件-->
    <properties resource="db.properties"/>

    <typeAliases>
        <package name="com.mumu.entity"/>
    </typeAliases>


<!--       default 默认执行的是id为development的配置信息   如果需要换个数据库连接信息  则把此处改为默认的数据库连接信息的 <environment id="development">的id值-->
    <environments default="development">
        <environment id="development">

<!--            数据库的事务管理器为JDBC-->
            <transactionManager type="JDBC"/>

<!--     使用的数据源是POOLED 连接池的实现 这种数据源利用了池的概念 避免了创建新的连接实例所需要的多余时间  这是一种并发web应用快速响应流行的方式-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
<!--                jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8-->
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mumu/dao/UserMapper.xml"/>
    </mappers>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值