修改idea maven设置
在idea中跳过maven的test操作,否则代码执行一次,test执行一次
跳过方式如下:
修改 IUserMapper
增加save方法
public int save(User user);
解释:
- 形参User:将要保持的数据,封装到
User类对象中
完整代码
package org.malaoshi.mapper;
import org.malaoshi.entity.User;
import java.util.List;
public interface IUserMapper {
public List<User> selectAll();
public int save(User user);
}
修改 userMapper.xml
增加insert标签
<insert id="save" parameterType="org.malaoshi.entity.User">
insert into user (id,username,password) values (#{id},#{username},#{password})
</insert>
解释:
parameterType属性,表示要插入的数据封装在该类对象中#{id}:取出该属性的值。ognl表达式,相当于执行user.getId()#{username}:取出该属性的值。ognl表达式,相当于执行user.getUsername()#{password}:取出该属性的值。ognl表达式,相当于执行user.getPassword()
在执行insert语句时,将封装在User类对象中的数据取出,放到对应的位置上
完整代码如下
<?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名字必须与dao包路径接口名完全相同 -->
<mapper namespace="org.malaoshi.mapper.IUserMapper" >
<!-- id名必须与dao中的方法名相同 -->
<select id="selectAll" resultType="org.malaoshi.entity.User">
select id,username,password from user
</select>
<insert id="save" parameterType="org.malaoshi.entity.User">
insert into user (id,username,password) values (#{id},#{username},#{password})
</insert>
</mapper>
执行
在测试类中增加下面代码
@Test
public void testSave() throws IOException {
/*
1. 读取 mybatis-config.xml 自定义命名的全局配置文件.
getResourceAsStream 使用的资源路径
*/
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 2. 使用sqlSession的工厂构造器来读入全局配置,再生成一个sqlSession工厂.
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 3. 通过 sqlSession 工厂打开一个 sqlSession,该方法返回的session不会自动提交
SqlSession sqlSession = sqlSessionFactory.openSession();
//4 使用SqlSession创建Dao接口的代理对象
IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
//创建user对象,封装要保存的数据
User user=new User();
user.setId("1004");
user.setUsername("韩梅梅");
user.setPassword("123456");
user.setAge(20);
user.setSex("0");
user.setStatus("1");
int num=mapper.save(user);
System.out.println("添加 "+num+" 条记录");
sqlSession.close();
inputStream.close();
}
执行结果如下:
需要提交事务

