Mybatis入门基本实例--实现增删改查

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_38321889/article/details/80727600

基于上一篇文章的Mybatis配置信息,我们可以实现一些基本的数据库功能模块,这里我以先前创建的User类作为数据库,对此进行增删改查的基础操作。其基本实现如下:

一、增加记录到数据库(INSERT INTO):

首先我们要明白,对数据库的操作是使用Java代码实现的,我们需要在Java中,需要通过加载Usermapper.xml的配置文件来构造与MySQL交互的SqlSession类。这就不难明白:我们的sql操作映射是单独配置在mapper.xml配置文件中。所以,在进行增删改查等一系列操作之前,我们需要进行在UserMapper中进行配置增删改查语句:
1.1、在UserMapper.xml文件中增加语句配置

<insert id="insertUser" parameterType="cn.com.mybatis.po.User">
    insert into
    user(username,password,gender,birthday,email,province,city)
    values(#{username},#{password},#{gender},#{birthday},#{email},#{province},#{city})
</insert>

1.2、在test文件中写一个insertTest类如下:

public void insertTest() throws ParseException{
        SqlSession session = dataConnection.getSqlSession();
        User user = new User();
        user.setUsername("王建民");
        user.setPassword("123456wangjianm");
        user.setGender("男");
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        user.setBirthday(format.parse("2001-02-12"));
        user.setProvince("麻省");
        user.setCity("哈佛市");
        user.setEmail("mashengshizh@1236.com");

        session.insert("test.insertUser",user);
        session.commit();
        session.close();
    }

在以上完成之后,其运行测试类输出文件如下则表示插入成功:
这里写图片描述

以上代码中我们没有设置id,而是根据user表的数据项实现自增。在我建表时就指定了id为主键自增。在我编写测试类也实现了自增。当然我们这里也还是在usermapper.xml里的insert标签里进行配置,其配置代码如下第二行:

<insert id="insertUser" parameterType="cn.com.mybatis.po.User" 
useGeneratedKey="true" keyProperty="id">
    insert into
    user(username,password,gender,birthday,email,province,city)
    values(#{username},#{password},#{gender},#{birthday},#{email},#{province},#{city})
</insert>

二、删除操作(Delete)

同样的,对于删除操作也需要进行UserMapper.xml中编写delete的配置项。

<delete id="deleteUser" parameterType="java.lang.Integer">
    delete from user where id = #{id}
</delete>

由于删除和增加修改操作,是没有返回结果值的,所以不需要进行配置resultType的值。
下面是我们编写的测试类:

    public void deleteTest(){
        SqlSession session = dataConnection.getSqlSession();
        session.delete("test.deleteUser",5);
        session.commit();
        session.close();
    }

以下是删除成功的执行的Console信息
删除成功

三、修改(Update)操作

和删除类似的,在userMapper.xml文件中配置

<update id="updateUserName" parameterType="cn.com.mybatis.po.User">
    update user set username=#{username} where id =#{id}
</update>

以下是测试java代码:

    public void updateTest(){
        SqlSession session = dataConnection.getSqlSession();
        User user = new User();
        user.setId(4);
        user.setUsername("陆万");
        session.update("test.updateUserName",user);
        session.commit();
        session.close();
    }

测试成功的Console代码:
这里写图片描述

四、查询操作(select)

4.1、按照ID查询单个
4.11、UserMapper.xml的配置代码:

<select id="findUserById" parameterType="int" resultType="cn.com.mybatis.po.User">
    SELECT * FROM USER WHERE id=#{id}
    </select>
    <!--在select的标签对中,findUserById的id属性是在SQL调用的mappedStatement语句中,实现唯一选择 parameter则是对输入参数的限定,
     resultType是指将取出的单记录映射成为名为User的java对象 #{}为输入参数的一个占位符。 -->

4.1.2、查询的测试类Java代码:

public void TestSelect() throws IOException {
//  getSql这个方法在上面的DataConnection中定义了
      SqlSession sqlSession = dataConnection.getSqlSession();
        User user = sqlSession.selectOne("test.findUserById",1);
        System.out.println("姓名:"+user.getUsername());
        System.out.println("性别:"+user.getGender());
        System.out.println("所在地:"+user.getProvince()+user.getCity());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("生日:"+sdf.format(user.getBirthday()));
        sqlSession.close();
    }

这里写图片描述
4.2,列表模糊查询
4.2.1、UserMapper.xml配置文件代码:

<select id="findUserByUsername" parameterType="java.lang.String"
    resultType="cn.com.mybatis.po.User">select * from user where username LIKE '%${value}%'
</select>

4.2.2、测试模糊类型的Java代码:

//  模糊查询实例方法
    public void TestFuzzySearch(){
        SqlSession sqlSession = dataConnection.getSqlSession();
        List<User> listuser = sqlSession.selectList("test.findUserByUsername","丽");
        for (int i = 0; i < listuser.size(); i++) {
            User user=listuser.get(i);
            int I = i+1;
            System.out.println("第"+I+"条记录如下:");
            System.out.println("姓名:"+user.getUsername());
            System.out.println("性别:"+user.getGender());
            System.out.println("所在地:"+user.getProvince()+user.getCity());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            System.out.println("生日:"+sdf.format(user.getBirthday()));
        }
        sqlSession.close();

五、入门总结

5.1Mybatis的使用场景总结
相比于JDBC操作,我们不难看出MyBatis的主要任务就是对UserMapper的配置,也就是对增删改查一系列的语句配置上。
MyBatis主要是以SQL语句核心的不完全关系映射模型。对SQL的映射编写,可以实现对SQL的优化,或者是业务经常变动的情况。

5.2、UserMapper.xml文件标签属性:
id:为所属操作标签唯一标识给底层的实现
parameterType:这里是指定输入参数的类型,这里的类型接受值可以是基本数据类型(int float char)、包装数据类型、
( integer、Double)和自定义JavaBean封装类型。
resultType:指定数据库返回的信息对应的数据类型。其是SQL配置中指定输出结果类型的其中一种配置条件,同样的,可以选择基本数据类型、包装数据类型和自定义JavaBean类型。

5.3、占位符:#{}
在SQL配置文件 UserMapper.xml文件中,接受输入参数需要占位符来标识对应位置,与传统JDBC的占位符“?”不同,这里的#{}在{}括号里面填写参数名称来接受输入参数,其可以接受的参数类型有简单类型,普通JavaBean和HashMap,当接受简单类型时候,可以在{}里填写value或者其他任意字符,如果接受的时JavaBean时,可以通过OGNL读取对象的属性值。

5.3、${}:在UserMapper.xml中,是SQL语句的拼接符号。

没有更多推荐了,返回首页