mybatis入门程序:向数据库中添加用户&&自增主键和非自增主键的返回
程序员文章站
2022-06-02 16:48:56
...
1、添加用户
(1)映射文件中添加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">
<!--namespace命名空间,作用就是对SQL进行分类化管理,理解为SQL的隔离-->
<mapper namespace="test">
<!--添加用户-->
<insert id="insertUser" parameterType="edu.tjut.pojo.User">
INSERT INTO user(username,birthday,sex,address) VALUE(#{username},#{birthday},#{sex},#{address})
</insert>
</mapper>
其中:parameterType:指定输入参数类型是pojo类
#{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值
(2)java程序
// 添加用户
@Test
public void insertUser() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 创建需要添加的对象
User user = new User();
user.setUsername("李大明");
user.setBirthday(new Date(1996-1900,8-1,24+1));
user.setSex("女");
user.setAddress("北京");
//通过SqlSession操作数据库
sqlSession.insert("test.insertUser",user);
//提交事务
sqlSession.commit();
//获取用户信息的主键
//System.out.println("这个是主键:"+user.getId());
//释放资源
sqlSession.close();
}
2、自增主键的返回
mysql自增主键,执行insert提交之前自动生成一个自增主键(这里是指用户的id),通过mysql函数获取刚插入记录的自增主键LAST_INSERT_ID(),在insert之后调用
<insert id="insertUser" parameterType="edu.tjut.pojo.User">
<!-- 将刚插入的主键返回,返回到user对象中
SELECT LAST_ID():得到刚insert进去记录的主键值,只适用于自增主键
keyProperty:将查询到的主键值设置到parameterType指定的对象的那个属性
order:SELECT LAST_INSERT_ID()的执行顺序,相当于insert语句来说它的执行顺序
resultType:指定SELECT LAST_INSERT_ID()的结果类型
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
</insert>
3、非自增主键的返回:
使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位。
执行思路:
先通过uuid()查询到主键,将主键输入到sql语句中
执行uuid()语句顺序相对于insert语句之前执行
(1)映射文件中添加SQL语句:
<!-- 使用mysql的uuid()生成主键
执行过程:
首先通过uuid()得到主键,将主键设置成user对象的id属性中
其次在insert执行时,从user对象中取出id属性值
-->
<!--添加用户-->
<insert id="insertUser" parameterType="edu.tjut.pojo.User">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String" >
SELECT uuid()
</selectKey>
insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}
</insert>
4、java程序
上一篇: oracle数据库锁表解决方案
下一篇: oracle数据库归档日志占满解决方案