MyBatis框架学习Ⅱ

本文详细介绍了MyBatis框架中如何实现数据的增删改查操作,包括模糊查找、插入数据并返回自增主键值、删除操作以及更新操作的具体实现方式。

MyBatis例题

模糊查找

User.xml

	<!-- 根据用户名称模糊查询用户列表 -->
    <!-- ${}:表示一个sql的连接符 -->
    <!-- ${value}:里面的value表示输入参数的参数名称,如果该参数是简单类型,那么${}里面的参数名称必须是value -->
    <!-- ${}这种写法存在sql注入的风险,所以要慎用!!但是在一些场景下,必须使用${},比如排序时,动态传入排序的列名,${}会原样输出,不加解释 -->
    <select id="findUsersByName" parameterType="java.lang.String"
            resultType="test.User">
		SELECT * FROM USER WHERE username LIKE '%${value}%'
	</select>
	@Test
    public void findUserByNameTest() throws Exception{
        //读取配置文件
        //全局配置文件的路径
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);

        //创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //调用SqlSession的增删改查方法
        //第一个参数:表示statement的唯一标示
        List<User> list = sqlSession.selectList("test.findUsersByName", "小明");
        System.out.println(list);
        //关闭资源
        sqlSession.close();
    }

插入数据,一般为插入一个对象

User.xml

	<insert id="insertUser" parameterType="test.User">
        INSERT INTO USER (username,birthday,sex,address) VALUE (#{username}, #{birthday},#{sex},#{address})
    </insert>
 @Test
    public void insertUserTest() throws Exception{
        //读取配置文件
        //全局配置文件的路径
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);

        //创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //调用sqlsession的增删改查方法
        //第一个参数:表示statement的唯一标示
        User user = new User();
        user.setUsername("yaoyan");
        user.setAddress("beijing");
        sqlSession.insert("test.insertUser", user);
        // 提交事务
        sqlSession.commit();
        //关闭资源
        sqlSession.close();
    }

返回自增主键值

User.xml

 <!-- 添加用户 -->
    <!-- selectKey:查询主键,在标签内需要输入查询主键的sql -->
    <!-- order:指定查询主键的sql和insert语句的执行顺序,相当于insert语句来说 -->
    <!-- LAST_INSERT_ID:该函数是mysql的函数,获取自增主键的ID,它必须配合insert语句一起使用 -->
    <insert id="insertUser1" parameterType="test.User">
        <selectKey keyProperty="id" resultType="int" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO USER
        (username,birthday,sex,address)
        VALUES(#{username},#{birthday},#{sex},#{address})
    </insert>
@Test
    public void insertUser1Test() throws Exception{
        //读取配置文件
        //全局配置文件的路径
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);

        //创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //调用sqlsession的增删改查方法
        //第一个参数:表示statement的唯一标示
        User user = new User();
        user.setUsername("yaoyan");
        user.setAddress("beijing");
        sqlSession.insert("test.insertUser1", user);

        System.out.println("user.getId() = " + user.getId());
        // 提交事务
        sqlSession.commit();
        //关闭资源
        sqlSession.close();
    }

删除操作

User.xml

<!-- 根据ID删除用户 -->
    <delete id="deleteUser" parameterType="int">
	DELETE FROM USER WHERE id= #{id}
    </delete>

 @Test
    public void deleTest() throws Exception{
        //读取配置文件
        //全局配置文件的路径
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);

        //创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //调用sqlsession的增删改查方法
        //第一个参数:表示statement的唯一标示
        sqlSession.delete("test.deleteUser", 28);
        // 提交事务
        sqlSession.commit();
        //关闭资源
        sqlSession.close();
    }

更新操作

User.xml

<update id="updateUser" parameterType="test.User">
	UPDATE USER SET username = #{username},sex=#{sex} WHERE id=#{id}
</update>
 @Test
    public void updateTest() throws Exception{
        //读取配置文件
        //全局配置文件的路径
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);

        //创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        User user = new User();
        user.setId(29);
        user.setUsername("chaoge");
        user.setAddress("shenyang");
        user.setSex("1");
        //调用sqlsession的增删改查方法
        //第一个参数:表示statement的唯一标示
        sqlSession.update("test.updateUser", user);
        // 提交事务
        sqlSession.commit();
        //关闭资源
        sqlSession.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值