insert:
<!--表的变更-->
<insert id="insert" parameterType="person">
<!--
selectKey做主键返回的
keyProperty:接收返回的主键的属性
order:insert语句和生成主键的sql的执行顺序mysql是after, oracle是before
resultType:返回主键的数据类型
生成主键的sql :last_insert_id()
-->
<selectKey keyProperty="id" order="AFTER" resultType="int">
select last_insert_id()
</selectKey>
insert into person_test (<include refid="colums"/>)
values(#{id},#{name},#{gender},#{address},#{birthday})
</insert>
Test类:
@Test
public void insert() {
SqlSession session = sessionFactory.openSession();
Person person = new Person();
// person.setId(3);
person.setName("张三");
person.setGender(0);
person.setAddress("上海");
person.setBirthday(new Date());
try {
int insert = session.insert("mappings.PersonTestMapper.insert", person);
// 数据库的变更都要提交事务
session.commit();
System.out.println("总共插入条数为:" + insert);
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
}
update:
<update id="update" parameterType="person">
update person_test t set
t.name = #{name},
t.gender = #{gender},
t.address = #{address},
t.birthday = #{birthday}
where
t.id = #{id}
</update>
Test类:
@Test
public void update() {
SqlSession session = sessionFactory.openSession();
Person person = new Person();
person.setId(5);
person.setName("xxxx");
person.setGender(0);
person.setAddress("北京");
person.setBirthday(new Date());
try {
int insert = session.update("mappings.PersonTestMapper.update", person);
// 数据库的变更都要提交事务
session.commit();
System.out.println("总共插入条数为:" + insert);
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
}
delete:
<delete id="delete" parameterType="person">
delete from person_test where id = #{id}
</delete>
Test类:
@Test
public void delete() {
SqlSession session = sessionFactory.openSession();
Person person = new Person();
person.setId(9);
try {
int count = session.delete("mappings.PersonTestMapper.delete", person);
// 数据库的变更都要提交事务
session.commit();
System.out.println("总共删除条数为:" + count);
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
}
insert时,返回新插入一条数据的主键:
<!--表的变更-->
<insert id="insert" parameterType="person">
<!--
selectKey做主键返回的
keyProperty:接收返回的主键的属性
order:insert语句和生成主键的sql的执行顺序mysql是after, oracle是before
resultType:返回主键的数据类型
生成主键的sql :last_insert_id()
-->
<selectKey keyProperty="id" order="AFTER" resultType="int">
select last_insert_id()
</selectKey>
insert into person_test (<include refid="colums"/>)
values(#{id},#{name},#{gender},#{address},#{birthday})
</insert>
Test类:
// 插入主键返回
@Test
public void insertPerson() {
SqlSession session = sessionFactory.openSession();
Person person = new Person();
person.setName("张三");
person.setGender(0);
person.setAddress("上海");
person.setBirthday(new Date());
try {
int insert = session.insert("mappings.PersonTestMapper.insert", person);
// 数据库的变更都要提交事务
session.commit();
System.out.println("总共插入条数为:" + insert);
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
}