mybatis新增(三)
来源:互联网 发布:风水织梦网站源码 编辑:程序博客网 时间:2024/06/05 05:46
User.xml映射文件配置
<insert id="insertUser" parameterType="com.test.domain.User"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO USER (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address}) </insert>
突然发现写错了标签,select也是可以插入数据的
测试代码
@org.junit.Test public void insertUser() throws Exception{ //读取配置文件 //全局配置文件的路径 String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //创建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setUsername("大小姐"); user.setSex("2"); user.setBirthday(new Date()); user.setAddress("王者"); int num = sqlSession.insert("test.insertUser", user); sqlSession.commit(); System.out.println(num); //关闭资源 sqlSession.close(); }
主键返回之自增主键
<!-- 添加用户 --> <!-- selectKey:查询主键,在标签内需要输入查询主键的sql --> <!-- order:指定查询主键的sql和insert语句的执行顺序,相当于insert语句来说 --> <!-- LAST_INSERT_ID:该函数是mysql的函数,获取自增主键的ID,它必须配合insert语句一起使用 --> <insert id="insertUser" parameterType="com.test.domain.User"> <selectKey keyProperty="id" resultType="int" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO USER (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address}) </insert>
keyProperty:selectKey 语句结果应该被设置的目标属性。对应的主键属性
resultType:返回结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串
order: 这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。
注:SelectKey需要注意order属性,像MySQL一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值。
像Oracle这样取序列的情况,需要设置为before,否则会报错。
测试代码
@org.junit.Test public void insertUser() throws Exception{ //读取配置文件 //全局配置文件的路径 String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //创建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setUsername("墨子"); user.setSex("1"); user.setBirthday(new Date()); user.setAddress("王者"); int num = sqlSession.insert("test.insertUser", user); sqlSession.commit(); System.out.println(user.getId()); //关闭资源 sqlSession.close(); }
阅读全文
0 0
- mybatis新增(三)
- Mybatis-新增
- mybatis 批量新增
- mybatis的批量新增
- MyBatis批量新增、更新
- mybatis的批量新增
- MyBatis的批量新增
- mybatis的批量新增
- mybatis 新增判断空
- mybatis的批量新增
- Mybatis批量新增,修改
- Mybatis批量新增
- mybatis insert新增语句
- mybatis新增处理逗号
- mybatis oracle 新增返回主键
- mybatis 批量新增 插入 案例
- MyBatis批量新增和更新
- MyBatis批量新增和更新
- 《最强大脑——77招让你成为脑力最好的人》读书笔记
- A
- mysqldump全备份及结合binlog日志恢复的全过程 (转)
- 熊大UWB系列教程二:KEIL软件环境搭建以及程序下载
- 《Inside C#》笔记(十五) 非托管代码 下
- mybatis新增(三)
- 转载 MYSQL协议分析
- Java中Arrays.asList()
- JVM内存模型
- 计算机网络总结
- 三.第一个Gradle应用程序(Application形式的jar程序)
- 信源编码作业——LMS算法
- 牛客网彩色瓷砖C/C++解决
- 简析Lock与synchronized