二【单表的增删改查】(只演示增 )


在这里插入图片描述

1.1 前述

MyBatis可以方便的对数据库进行操作,而数据库表可能是一个相对独立的表(这里谓之单表),也可能两个或多个有密切联系的表(这里谓之多表),本章先来学习单表的增删改查操作,SqlSession的若干方法,这些方法被用来执行定义在mapper映射文件中的SELECT、INSERT、UPDATE和DELETE语句。以下是一些常用的方法。

T selectOne(String statement, Object parameter) 查询单条记录
List selectList(String statement, Object parameter) 查询记录集合
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey) 查询记录封装成Map集合
int insert(String statement, Object parameter) 插入一条记录
int update(String statement, Object parameter) 修改一条记录
int delete(String statement, Object parameter) 删除一条记录

以上方法可以重载,第二个参数不是必要的,重载方法如下。

T selectOne(String statement)
List selectList(String statement)
<K,V> Map<K,V> selectMap(String statement, String mapKey)
int insert(String statement)
int update(String statement)
int delete(String statement)
v

1.2 结果映射resultMap

结果映射就是数据库中的字段名和Java代码中 实体类属性名一一对应的机制,查询的结果封装成java对象,如果数据库的字段名称跟相应的类的属性名称不一样,不作处理的话,mybatis运行后相应的字段处的查询结果就为空

1.2.1 字段名和属性名不匹配情况

<select id="findAllStudents" resultType="com.lifeng.entity.Student">
		SELECT id,
			studentname,
			gender,
			age		
		FROM STUDENT
</select>

在这里插入图片描述

1.2.2 解决方法

  1. 在sql语句中 用起别名的方法对应字段名
  2. 在xml映射文件中配置resutlMap
  3. 设置驼峰命名的映射
    在这里插入图片描述

ResultMap: 将查询的sql结果映射为Student 对象

id property=“sid” -----------> colum="id "
字段名---------------------------------属性名

除上面的方法解决外,在遵循数据库和Java命名规则时只需配置Mybatis文件
在这里插入图片描述
在这里插入图片描述

1.3 使用Insert 方法添加数据(涉及主键 问题)

(1)检查数据库student表,确认主键非自增长,在接口类IStudentDao中新增一个方法。
public int insertStudent(Student student);
(2)在映射文件StdentMapper.xml中新增一段insert语句。
 <!--  添加一个学生 -->
<insert id="insertStudent" parameterType="Student">
		INSERT INTO student(id, studentname, gender, age)
		VALUES
		(#{sid}, #{sname}, #{sex}, #{age})
</insert>

#{sid}是占位符,传进来的值是参数类型Student对应的同名属性值,即Student对象的sid属性的值
在这里插入图片描述

在不涉及业务层的情况 代码如下:

*@Before在执行sql时 优先执行initial(); 加载配置文件

public class AppTest {
    SqlSessionFactory factory = null;
    @Before
    public void init(){

        try {
            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    @Test
    public void add() {

        SqlSession sqlSession = factory.openSession(true);
        // 获取接口实现类 多态    动态代理方式  ->代理对象 实现类
        UserMapper userDao = sqlSession.getMapper(UserMapper.class);   // UserDaoImpl@1353456
        System.out.println("userDao = " + userDao);
        User user = new User();
        user.setPassword("99999");
        //user.setUsername("root");
        Integer line = userDao.insertUser(user);
        System.out.println(line>0);
        sqlSession.close();

    }
    }

在数据库中 设置主键自增主键后 在mapper.xml文件中 配置如下
注意 是insert sql语句
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值