本文已参与「新人创作礼」活动,一起开启掘金创作之路
添加用户
1. 编写customer表的domain类作映射
@Setter@Getter
public class Customer {
private Integer cust_id;
private String cust_name;
private String cust_profession;
private String cust_phone;
private String email;
@Override
public String toString() {
return "Customer{" +
"cust_id=" + cust_id +
", cust_name='" + cust_name + ''' +
", cust_profession='" + cust_profession + ''' +
", cust_phone='" + cust_phone + ''' +
", email='" + email + ''' +
'}';
}
}
2. Mapping中添加插入的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">
<mapper namespace="myTest">
<!--添加用户-->
<insert id="addCustomer" parameterType="demo1.Customer">
INSERT INTO customer (cust_name,cust_profession,cust_phone,email) VALUES
(#{cust_name},#{cust_profession},#{cust_phone},#{email})
</insert>
</mapper>
3. 将Mapping配置到SqlMappingConfig中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<!--使用jdbc事务管理-->
<transactionManager type="JDBC"/>
<!--配置数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/development"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--加载映射文件-->
<mappers>
<mapper resource="demo1/Mapping"/>
</mappers>
</configuration>
4. 编写测试类
// 添加用户
@Test
public void test3() throws IOException {
// 1、创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//2、加载SqlMappingConfig配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMappingConfig");
//3、创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
//4、创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//5、设置对象参数
Customer customer = new Customer();
customer.setCust_name("赵六");
customer.setCust_profession("老师");
customer.setCust_phone("14123576541");
customer.setEmail("132@qqahj.com");
System.out.println(customer);
//6、执行sql语句保存对象
sqlSession.insert("addCustomer",customer);
//7、提交事务,将数据写入到数据库中
sqlSession.commit();
System.out.println("添加成功");
//8、关闭连接,释放资源
sqlSession.close();
}
数据库表初始状态
运行结果
查看数据库表数据
返回添加过后自增的主键
如果我们想获取到最新添加的数据记录的主键,我们可以配置Mapping的insert标签,增加一个selectKey的选项如下
<selectKey keyColumn **="cust_id" **keyProperty **="cust_id" **order **="AFTER" **resultType **="Integer" **>
SELECT LAST_INSERT_ID()
</selectKey>
配置后的Mapping如下
<?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">
<mapper namespace="myTest">
<!--添加用户-->
<insert id="addCustomer" parameterType="demo1.Customer">
<!--返回新增加记录的主键-->
<selectKey keyColumn="cust_id" keyProperty="cust_id" order="AFTER" resultType="Integer">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO customer (cust_name,cust_profession,cust_phone,email) VALUES
(#{cust_name},#{cust_profession},#{cust_phone},#{email})
</insert>
</mapper>
测试类测试输出新增记录的主键
// 添加用户
@Test
public void test3() throws IOException {
// 1、创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//2、加载SqlMappingConfig配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMappingConfig");
//3、创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
//4、创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//5、设置对象参数
Customer customer = new Customer();
customer.setCust_name("赵六");
customer.setCust_profession("老师");
customer.setCust_phone("14123576541");
customer.setEmail("132@qqahj.com");
System.out.println(customer);
//6、执行sql语句保存对象
sqlSession.insert("addCustomer",customer);
//7、提交事务,将数据写入到数据库中
sqlSession.commit();
System.out.println("添加成功");
System.out.println(customer.getCust_id());//返回新增记录的主键
//8、关闭连接,释放资源
sqlSession.close();
}
运行结果
补充说明
由于我们使用了Lombok来配置domain类中的setter和getter,所以我们需要在IDEA中开启注解,否则编译程序时会报错。
File-Settings打开IDEA设置界面