MyBatis学习笔记(四)——入门程序(续)

本博客源码下载:戳我一下

Mybatis学习笔记汇总:戳我一下

为入门程序增加删除和更新数据的功能,上一篇博客:Mybatis学习笔记(三)

user.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间,作用是对sql进行分类化管理
注意:如果使用mapper代理方法开发,namespace有特殊的作用
 -->
<mapper namespace="test">
    <!-- 在映射文件中配置很多sql语句 -->
    <!-- 通过select执行查询数据库操作
    id:标识映射文件中的sql。称为statement的id
    #{}表示一个占位符
    parameterType:指定输入参数的类型,这里指定int型,与数据库中类型对应
    #{id}:其中id表示接收输入的参数,参数名称就是id,如果输入的参数是简单类型
    #{}中的参数名可以任意。
    resultType:指定sql输出结果所映射的java对象类型
     -->
    <select id="findUserById" parameterType="int"
     resultType="com.jiayifan.po.User">
        SELECT * FROM USER WHERE id=#{id}
    </select>
    <!-- 
        根据用户名称模糊查询,可能返回多条记录
        resultType:不管返回单条还是多条,都是一条记录锁映射的java对象类型
        ${}:表示拼接sql串,将接受到的参数的内容不加任何修饰的拼接到sql中
        使用该符号拼接sql语句可能引起sql注入
        ${value}:接收输入参数的内容,如果传入的参数是简单类型,那么${}中只能使用value
     -->
    <select id="findUserByName" parameterType="java.lang.String" resultType="com.jiayifan.po.User">
        SELECT * FROM USER WHERE username LIKE '%${value}%'
    </select>
    <!-- 
        添加用户
        parameterType:指定的输入参数类型是pojo(用户信息)
        #{}中指定pojo的属性名,接收到pojo的属性值
     -->
    <insert id="insertUser" parameterType="com.jiayifan.po.User">
        <!-- 
            将插入的主键返回,返回到User对象中
            select last_insert_id():得到刚插入进的记录的主键值,只适用于自增长
            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,sex,address)VALUE(
            #{username},#{birthday},#{sex},#{address})
    </insert>
    <!-- 删除用户
        根据id删除用户,需要输入id值
     -->
    <delete id="deleteUser" parameterType="java.lang.Integer" >
        delete from user where id=#{id}
    </delete>
    <!-- 
        更新用户,根据id更新,需要输入用户id,以及更新信息
     -->
    <update id="updateUser" parameterType="com.jiayifan.po.User">
        update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
    </update>
</mapper>

程序代码

package com.jiayifan.first;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import com.jiayifan.po.User;

/**
 * Mybatis入门程序
 * @author 贾一帆
 *
 */
public class MybatisFirst {
    //根据id查询用户信息,得到一条记录结果
    @Test
    public void findUserById() throws IOException {
        //Mybatis的配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlsession = sessionFactory.openSession();
        //通过SQLSession操作数据库
        //第一个参数就是映射文件中的statement的id,等于命名空间.id
        //第二个参数是映射文件中所匹配的parameterType类型参数
        //该函数运行最终的结果就是与你映射文件中所匹配的resoultType类型的对象
        User user = sqlsession.selectOne("test.findUserById", 1);
        System.out.println(user);
        //释放资源
        sqlsession.close();
    }
    //根据用户名称来模糊查询用户列表
    @Test
    public void findUserByName() throws IOException {
        //Mybatis的配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlsession = sessionFactory.openSession();
        //通过SQLSession操作数据库
        //第一个参数就是映射文件中的statement的id,等于命名空间.id
        //第二个参数是映射文件中所匹配的parameterType类型参数
        //该函数运行最终的结果就是与你映射文件中所匹配的resoultType类型的对象
        List<User> list = sqlsession.selectList("test.findUserByName","小明");
        System.out.println(list);
        sqlsession.close();
    }
    @Test
    public void insertUser() throws IOException {
        //Mybatis的配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlsession = sessionFactory.openSession();
        //通过SQLSession操作数据库
        //第一个参数就是映射文件中的statement的id,等于命名空间.id
        //第二个参数是映射文件中所匹配的parameterType类型参数
        //该函数运行最终的结果就是与你映射文件中所匹配的resoultType类型的对象
        //插入用户对象,先创建一个对象
        User user = new User();
        user.setUsername("贾一帆");
        user.setAddress("河南");
        user.setBirthday(new Date());
        user.setSex("1");
        sqlsession.insert("test.insertUser",user);
        //执行提交事务
        System.out.println(user.getId());
        sqlsession.commit();
        sqlsession.close();
    }
    @Test
    public void deleteUser() throws IOException {
        //Mybatis的配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlsession = sessionFactory.openSession();
        //通过SQLSession操作数据库
        //第一个参数就是映射文件中的statement的id,等于命名空间.id
        //第二个参数是映射文件中所匹配的parameterType类型参数
        //传入id删除用户
        sqlsession.delete("test.deleteUser",28);
        sqlsession.commit();
        sqlsession.close();

    }
    @Test
    public void updateUser() throws IOException {
        //Mybatis的配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlsession = sessionFactory.openSession();
        //通过SQLSession操作数据库
        //第一个参数就是映射文件中的statement的id,等于命名空间.id
        //第二个参数是映射文件中所匹配的parameterType类型参数
        User user = new User();
        user.setId(1);
        user.setBirthday(new Date());
        user.setUsername("lalala");
        sqlsession.update("test.updateUser",user);
        sqlsession.commit();
        sqlsession.close();
    }
}
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页