Mybatis添加

95 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

添加用户

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();
    }

数据库表初始状态

图片1.png

运行结果

图片2.png

查看数据库表数据

图片3.png

返回添加过后自增的主键

如果我们想获取到最新添加的数据记录的主键,我们可以配置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();
}

运行结果

图片4.png

图片5.png

补充说明

由于我们使用了Lombok来配置domain类中的setter和getter,所以我们需要在IDEA中开启注解,否则编译程序时会报错。

File-Settings打开IDEA设置界面

图片6.png