Mybatis语法练习

这篇博客介绍了如何在IDEA中使用MyBatis进行查询和更新操作。首先展示了查询年龄小于100岁的女性用户的方法,接着演示了根据名字包含特定字符并按年龄降序排列的查询。此外,还讲解了查询年龄在100到300之间的用户。最后,给出了将指定用户年龄设为18岁的更新示例,包括使用`foreach`标签遍历多个用户名进行更新的操作。
摘要由CSDN通过智能技术生成

mybatis案例练习

这是IDEA中分级目录设置

#  1.查询age<100岁的女性用户

######   测试代码:

public class TestMybatis {
    SqlSessionFactory sqlSessionFactory;
    @BeforeEach
    public void before() throws IOException {
        String resource="mybatis\\mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
      @Test
    public void testFind(){
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user=new User();
        user.setSex("女").setAge(100);
        List<User> list = userMapper.findByAge(user);
        System.out.println(list);
        sqlSession.close();

##  映射文件XML

    <select id="findByAge" resultType="com.jt.pojo.User">
        select * from demo_user where age &lt; #{age} and sex = #{sex}
    </select>

# 2. 查询name中包含"精"的数据.并且按照年龄降序排列(@BerforeEach同上)

## 测试代码

 @Test
    public void testFind2(){
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        HashMap<Object, Object> map = new HashMap<>();
        map.put("column","age");
        map.put("name","%精%");
        List<User> list = userMapper.findByOrder(map);
        System.out.println(list);
        sqlSession.close();

## XML映射文件

<select id="findByOrder" resultType="com.jt.pojo.User">
        SELECT * FROM demo_user WHERE NAME LIKE #{name} ORDER BY ${column} desc
    </select>


# 3.查询age位于100-300的数据

## 测试文件

    @Test
    public void testFind3(){
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        HashMap<Object, Object> map = new HashMap<>();
        map.put("maxAge",300);
        map.put("minAge", 100);
        List<User> list = userMapper.findByAge2(map);
        System.out.println(list);
        sqlSession.close();
    }

## XML文件

    <select id="findByAge2" resultType="com.jt.pojo.User">
        select * from demo_user where age between #{minAge} and #{maxAge}
    </select>


# 4.将name为小乔/大乔/王昭君的年龄改为18岁,性别女

## 测试文件

    @Test
    public void testUpdate(){
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        HashMap<Object, Object> map = new HashMap<>();
        String[] names={"王昭君","大乔","小乔"};
        map.put("age", 18);
        map.put("sex", "女");
        map.put("names",names);
        int rows = userMapper.updateByNames(map);
        if (rows>0){
            System.out.println("事务已提交");
        }
        System.out.println(rows);
        sqlSession.close();
    }

## XML文件
 

<update id="updateByNames">
        update demo_user set sex =#{sex},age = #{age} where name in(
        <foreach collection="names" item="names" separator=",">
            #{names}
        </foreach>
        )
    </update>

# 注意:

mybatis为了参数取值方便,特意封装了遍历的标签 foreach
        关于标签参数说明:
            <foreach collection=""></foreach>
            1.如果传递的参数是数组,     则collection="array"
            2.如果传递的参数是list集合, 则collection="list"
            3.如果传递的参数是Map集合,  则collection="map中的key"

        标签属性说明:
            1.collection 集合的名称
            2.item 每次遍历的数据的形参变量
            3.open 循环的开始标签
            4.close 循环的结束标签
            5.index 循环遍历下标 一般不用
            6.separator 循环遍历的分割符
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值