mybatisMyBatis的crud操作以及字段与属性不匹配的问题

Posted yufengwang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatisMyBatis的crud操作以及字段与属性不匹配的问题相关的知识,希望对你有一定的参考价值。

使用MyBatis对表执行CRUD操作

1.定义sql映射文件

  userMapper.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:表示名称空间。现在的目的是区分id的. -->
<mapper namespace="com.zhiyou100.wyf.dao.UseraDao">
    <!-- 根据id查询用户。id:标识该标签。
             parameterType:参数类型。可以写 也可以省略
             resultType:返回结果的类型。
            #id:类似于EL表达式。 解析id的值
     -->
    <select id="getUsers" parameterType="int" resultType="com.zhiyou100.wyf.bean.Users">
        select * from users where id = #id
    </select>
    
    <insert id="add" parameterType="com.zhiyou100.wyf.bean.Users">
        insert into users(name,age) values(#name,#age)
    </insert>
    
    <delete id="delete" parameterType="com.zhiyou100.wyf.bean.Users">
        delete from users where id =#id
    </delete>
    
    <update id="update" parameterType="com.zhiyou100.wyf.bean.Users">
        update users set name=#name,age=#age where id=#id
    </update>
    
</mapper>

 

抽象接口userDao中的代码:

package com.zhiyou100.wyf.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.zhiyou100.wyf.bean.Users;

public interface UseraDao 
    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    public Users getUsers(int id);
    /**
     * 根据id删除用户
     * @param id
     */
    public void delete(int id);
    
    /**
     * 增加用户
     * @param id
     */
    public void add(Users user);
    
    /**
     * 修改用户
     * @param id
     */
    public void update(Users user);
    
    /**
     * 查询用户
     * @param id
     */
    public List<Users> selectbyid(@Param("min") int min,@Param("max") int max);

 

单元测试类代码如下:

package com.test;

import static org.junit.jupiter.api.Assertions.*;

import java.io.Reader;
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.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

import com.zhiyou100.wyf.bean.Users;
import com.zhiyou100.wyf.dao.UseraDao;

class TestMy 
    static SqlSession session = null;
    static String str ="com.zhiyou100.wyf.mapper.UsersMapper";
    
    @BeforeAll
    static void setUpBeforeClass() throws Exception 
        //解析配置文件conf.xml
        Reader reader = Resources.getResourceAsReader("conf.xml");
        //获取SessionFactory对象
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        session=sessionFactory.openSession();
    


    @Test
    void testck() 
        UseraDao useraDao = session.getMapper(UseraDao.class);
        Users user = useraDao.getUsers(1);
        System.out.println(user);
    
    
    @Test
    void testdelete() 
        UseraDao useraDao = session.getMapper(UseraDao.class);
        useraDao.delete(3);
    
    
    @Test
    void testadd() 
        UseraDao useraDao = session.getMapper(UseraDao.class);
        useraDao.add(new Users("张麻子",196));
    
    
    @Test
    void testupdate() 
        UseraDao useraDao = session.getMapper(UseraDao.class);
        useraDao.update(new Users(5,"张麻子",17));
    
    
    @AfterAll
    static void tearDownAfterClass() throws Exception 
        session.commit();
    

2.解决字段与属性不匹配

2.1解决方案为给查询的字段起别名,要求别名与属性名一致。

技术图片

 

 2.2使用resultMap标签来定义实体类与字段之间的对应关系

技术图片

 

https://www.cnblogs.com/xdp-gacl/p/4262895.html

 

以上是关于mybatisMyBatis的crud操作以及字段与属性不匹配的问题的主要内容,如果未能解决你的问题,请参考以下文章

MybatisMybatis简介以及CRUD的使用

MybatisMybatis简介以及CRUD的使用

MybatisMyBatis对表执行CRUD操作

MyBatisMyBatis CRUD操作单元测试的使用${} 与 #{} 的区别

MybatisMyBatis之动态SQL

数据库CRUD操作以及MyBatisd的配置使用