【Mybatis从0到1-004】模糊查询、更新、删除、添加用户

【Mybatis从0到1-003】mybatis框架及简单入门程序是解决本章内容的关键,本章节主要是实现模糊查询、更新、删除、添加用户。实现步骤与之前一章完全一样,这里再傻瓜式的走一遍流程,加深记忆与理解。

只需要两步,第一,修改映射文件User.xml;第二,书写程序逻辑代码。

【1】首先,实现模糊查询用户信息。

【1-1】修改映射文件,加入如下代码:

<!-- 根据用户名称模糊查询用户信息,可能返回多条
resultType:指定就是单条记录所映射的java对象 类型
${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中。
使用${}拼接sql,引起 sql注入
${value}:接收输入 参数的内容,如果传入类型是简单类型,${}中只能使用value
 -->
    <select id="findUserByUsername" parameterType="java.lang.String" resultType="po.User">
         SELECT *FROM user WHERE username like '%${value}%'
    </select>

【1-2】添加程序代码到MyFirstMybatisTest.java文件,加入如下代码。

  public void findUserByUsername() throws Exception {// mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);

        // 创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        List<User> userList = sqlSession.selectList("test.findUserByUsername","%小明%");

        System.out.println(userList);

        // 释放资源
        sqlSession.close();
【1-3】根据之前的创建单元测试的方法,给函数findUserByUsername()创建单元测试,创建好的代码如下所示:

【1-4】运行findUserByUsername()函数,将会显示如下信息:


模糊查询结束。

剩下的更新、删除和添加的步骤,与上面一模一样,这里只贴出关键代码。

【2】更新用户信息

【2-1】配置映射文件

<!-- 根据id更新用户
	分析:
	需要传入用户的id
	需要传入用户的更新信息
	parameterType指定user对象,包括 id和更新信息,注意:id必须存在
	#{id}:从输入 user对象中获取id属性值
	 -->
    <update id="updateUser" parameterType="po.User">
        UPDATE user SET username =#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id =#{id}
    </update>
【2-2】添加程序代码到MyFirstMybatisTest.java文件,加入如下代码

// 更新用户信息
    public void updateUserTest() throws Exception {
        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = new User();
        //必须设置id
        user.setId(29);
        user.setUsername("王小二");
        user.setBirthday(new Date());
        user.setSex("2");
        user.setAddress("北京海淀");
        sqlSession.update("test.updateUser", user);
        // 提交事务
        sqlSession.commit();
        // 释放资源
        sqlSession.close();
    }
【2-3】创建测试单元和运行略
【3】删除用户信息

【3-1】配置映射文件

 <!-- 删除 用户
	根据id删除用户,需要输入 id值
	 -->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id=#{id}
    </delete>
【3-2】添加程序代码到MyFirstMybatisTest.java文件,加入如下代码

public void deleteUserTest() throws Exception {
        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);

        // 创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        sqlSession.delete("test.deleteUser",30);
        // 提交事务
        sqlSession.commit();
        // 释放资源
        sqlSession.close();
    }
【3-3】创建测试单元和运行略
【4】添加用户

【4-1】配置映射文件

<!-- 添加用户
    parameterType:指定输入 参数类型是pojo(包括 用户信息)
    #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值
    -->
    <insert id="insertUser" parameterType="po.User">
        <!--  将插入数据的主键返回,返回到user对象中
                SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用与自增主键

                keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性
                order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序
                resultType:指定SELECT LAST_INSERT_ID()的结果类型
                 -->
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO user(username,birthday,address) VALUES(#{username},#{birthday},#{address})
    </insert>

【4-2】添加程序代码到MyFirstMybatisTest.java文件,加入如下代码

 public void insertUserTest() throws Exception {
        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
       User user = new User();
       user.setSex("1");
       user.setUsername("王小军");
       user.setAddress("河南郑州");
       user.setBirthday(new Date());
       sqlSession.insert("test.insertUser",user);
       //提交事务
       sqlSession.commit();
        // 获取用户信息主键
        System.out.println(user.getId());
        // 释放资源
        sqlSession.close();
    }
4 -3】创建测试单元和运行略

上面就是通过mybatis进行用户信息的增加、删除、更新、查找的操作,最后做个总结。

【总结】

1. 在映射文件中通过parameterType指定输入 参数的类型

2. 在映射文件中通过resultType指定输出结果的类型

3. #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型、pojo、hashmap。如果接收简单类型,#{}中可以写成value或其它名称。#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

4. ${}表示一个拼接符号,会导致sql注入,所以不建议使用${}。${}接收输入参数,类型可以是简单类型,pojo、hashmap。如果接收简单类型,${}中只能写成value。${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

5. selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)

6. selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值