mybatis深入浅出之增删改查

结合上一篇文章《mybatis深入浅出之框架搭建》继续深入浅出的学习mybatis:https://blog.csdn.net/weixin_41477980/article/details/86591440

1.根据id查询用户

在user.xml中添加select标签,编写sql:

<?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="test">

<!-- id:statement的id 或者叫做sql的id-->

<!-- parameterType:声明输入参数的类型 -->

<!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->

<!-- #{}:输入参数的占位符,相当于jdbc的? -->

<select id="queryUserById" parameterType="int"

resultType="cn.mybatis.pojo.user">

SELECT * FROM `user` WHERE id  = #{id}

</select>

</mapper>

测试程序:

public void testQueryUserById() throws Exception {

// 1. 创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

// 2. 加载SqlMapConfig.xml配置文件,默认在src路径下寻找。

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 3. 创建SqlSessionFactory对象

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

// 4. 创建SqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 5. 执行SqlSession对象执行查询,获取结果User

// 第一个参数是User.xml的statement的id,第二个参数是执行sql需要的参数;

Object user = sqlSession.selectOne("queryUserById", 1);

// 6. 打印结果

System.out.println(user);

// 7. 释放资源

sqlSession.close();

}

2.根据用户名模糊查询用户——方法一

在user.xml中添加select标签,编写sql:

<!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 -->

<!-- resultType的配置和返回一个结果的配置一样 -->

<select id="queryUserByUsername1" parameterType="string"

resultType="cn.mybatis.pojo.user">

SELECT * FROM `user` WHERE username LIKE #{username}

</select>

测试程序:

public void testQueryUserById() throws Exception {

// 1. 创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

// 2. 加载SqlMapConfig.xml配置文件,默认在src路径下寻找。

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 3. 创建SqlSessionFactory对象

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

// 4. 创建SqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 5. 执行SqlSession对象执行查询,获取结果User

// 查询多条数据使用selectList方法

List<Object> list = sqlSession.selectList("queryUserByUsername1", "%王%");

// 6. 打印结果

for (Object user : list) {

System.out.println(user);

}

// 7. 释放资源

sqlSession.close();

}

2.根据用户名模糊查询用户——方法二

在user.xml中添加select标签,编写sql:

<!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 -->

<!-- resultType的配置和返回一个结果的配置一样 -->

<!-- 如果传入的参数是简单数据类型,${}里面必须写value -->

<select id="queryUserByUsername2" parameterType="string"  resultType="cn.mybatis.pojo.user">

SELECT * FROM `user` WHERE username LIKE '%${value}%'

</select>

测试程序:

public void testQueryUserById() throws Exception {

// 1. 创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

// 2. 加载SqlMapConfig.xml配置文件,默认在src路径下寻找。

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 3. 创建SqlSessionFactory对象

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

// 4. 创建SqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 5. 执行SqlSession对象执行查询,获取结果User

// 查询多条数据使用selectList方法

List<Object> list = sqlSession.selectList("queryUserByUsername2", "王");

// 6. 打印结果

for (Object user : list) {

System.out.println(user);

}

// 7. 释放资源

sqlSession.close();

}

#{}和${}的区别:https://blog.csdn.net/weixin_41477980/article/details/86574536

parameterType和resultType:

parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。

resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中

3.添加用户

在User.xml配置文件中添加如下内容:

<!-- 保存用户 -->

<insert id="saveUser" parameterType="cn.mybatis.pojo.user">

INSERT INTO `user`

(username,birthday,sex,address) VALUES

(#{username},#{birthday},#{sex},#{address})

</insert>

测试程序:

public void testQueryUserById() throws Exception {

// 1. 创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

// 2. 加载SqlMapConfig.xml配置文件,默认在src路径下寻找。

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 3. 创建SqlSessionFactory对象

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

// 4. 创建SqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 5. 执行SqlSession对象执行保存

// 创建需要保存的User

User user = new User();

user.setUsername("张飞");

user.setSex("1");

user.setBirthday(new Date());

user.setAddress("蜀国");

sqlSession.insert("saveUser", user);

System.out.println(user);

// 需要进行事务提交

sqlSession.commit();

// 7. 释放资源

sqlSession.close();

}

4.修改用户

在User.xml配置文件中添加如下内容:

<!-- 更新用户 -->

<update id="updateUserById" parameterType="cn.mybatis.pojo.user">

UPDATE `user` SET

username = #{username},sex=#{sex},birthday=#{birthday} WHERE id = #{id}

</update>

测试程序:

public void testQueryUserById() throws Exception {

// 1. 创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

// 2. 加载SqlMapConfig.xml配置文件,默认在src路径下寻找。

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 3. 创建SqlSessionFactory对象

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

// 4. 创建SqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 5. 执行SqlSession对象执行更新

// 创建需要更新的User

User user = new User();

user.setId(26);

user.setUsername("关羽");

user.setSex("1");

user.setBirthday(new Date());

user.setAddress("蜀国");

sqlSession.update("updateUserById", user);

// 需要进行事务提交

sqlSession.commit();

// 7. 释放资源

sqlSession.close();

}

5.删除用户

在User.xml配置文件中添加如下内容:

<!-- 删除用户 -->

<delete id="deleteUserById" parameterType="int">

delete from user where

id=#{id}

</delete>

测试程序:

public void testQueryUserById() throws Exception {

// 1. 创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

// 2. 加载SqlMapConfig.xml配置文件,默认在src路径下寻找。

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

// 3. 创建SqlSessionFactory对象

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

// 4. 创建SqlSession对象

SqlSession sqlSession = sqlSessionFactory.openSession();

// 5. 执行SqlSession对象执行删除

sqlSession.delete("deleteUserById", 48);

// 6.需要进行事务提交

sqlSession.commit();

// 7. 释放资源

sqlSession.close();

}

猜你喜欢

转载自blog.csdn.net/weixin_41477980/article/details/86593696