关于selectKey
来源:互联网 发布:淘宝模特签约合同 编辑:程序博客网 时间:2024/06/06 18:18
<!--MyBatis核心jar包--><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version></dependency><!--MySQL配置--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version></dependency><build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>utf8</encoding> </configuration> </plugin> </plugins></build>
2.接下来 我们要搭好练习项目架构(如图所示:)
3.现在我们来配置Mybatis.xml文件
<?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>
<propertiesresource="config.properties">
</properties>
<environmentsdefault="development">
<environmentid="development">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<propertyname="driver"value="${driver}"/>
<propertyname="url"value="${url}"/>
<propertyname="username"value="${username}"/>
<propertyname="password"value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapperclass="haha.UserDao"/>
<mapperresource="user.xml"/>
</mappers>
</configuration>
User有三个属性:name,age和id,重写toString()方法便于调试。
public class User {
String name;
Integer age;
Integer id;
public User(){}
public User(String name,intage){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age= age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id= id;
}
@Override
publicString toString() {
return String.format("(id:%d,name:%s,age:%d)",id, name,age);
}
}
UserDao接口有两个功能:插入、查询全部
public interface UserDAO {
@Insert("insert into user(name,age) value (#{name},#{age})")
int insert_withoutPrimaryKey(@Param("name") String name,@Param("age")int age);
int insert_useGeneratedKey(@Param("user") User user);
int insert_selectKey(@Param("user") User user);
@Insert("insert into user(name,age) value(#{user.name},#{user.age})")
@SelectKey(statement = "select last_insert_id()",keyProperty = "user.id",before = false,resultType =int.class)
int insert_selectKeyAnotation(@Param("user") User user);
@Select("select*from user")
List<User> getAll();
}
<?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">
<mappernamespace="haha.UserDao">
<insertid="insert_useGeneratedKey"parameterType="haha.User"
useGeneratedKeys="true"keyProperty="user.id">
insert into user set id=#{user.id},name=#{user.name},age=#{user.age}
</insert>
<insertid="insert_selectKey"parameterType="haha.User">
<selectKeykeyProperty="user.id"keyColumn="id"order="AFTER"resultType="int">
SELECT last_insert_id()
</selectKey>
insert into user(name,age) VALUE (#{user.name},#{user.age})
</insert>
</mapper>
7.编写测试类
packagehaha;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.List;
public classUserService {
public static voidmain(String[] args)throwsIOException {
String resource ="mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder =newSqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
SqlSession session = factory.openSession();
UserDao dao = session.getMapper(UserDao.class);
//使用默认主键
intaffectedRows = dao.insert_withoutPrimaryKey("张三",25);
System.out.println(affectedRows);
//使用useGeneratedKey,将主键注入到user.id中
User u =newUser("李四",17);
affectedRows = dao.insert_useGeneratedKey(u);
System.out.println(affectedRows + " "+ u.getId());
//使用selectKey执行在插入之前或之后执行查询语句
affectedRows = dao.insert_selectKey(u);
System.out.println(affectedRows + " "+ u.getId());
//使用selectKey注解的方式
affectedRows = dao.insert_selectKeyAnotation(u);
System.out.println(affectedRows + " "+ u.getId());
session.commit();
List<User> a = dao.getAll();
a.forEach(System.out::println);
}
}
- 关于selectKey
- 面试题 关于SelectKey
- SelectKey
- selectKey
- selectKey
- iBatis selectKey
- ibatis selectKey
- Mybatis - SelectKey
- selectKey标签
- ibatis的selectkey
- Ibatis之selectkey
- ibatis的selectKey学习
- ibatis和postgreSQL selectKey
- Mybatis 示例之 SelectKey
- mybatis的selectKey功用
- ibatis的selectkey
- MyBatis <selectKey>标签
- Mybatis 示例之 SelectKey
- hdu 2089 数位dp入门
- jsp表单重复提交
- OpenLDAP中schema 的简单设计
- C语言(Head First C)-5_3:使用多个源文件:make自动化构建工具
- exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Las
- 关于selectKey
- 使用Nginx实现反向代理
- 初见Java消息中间件之ActiveMQ
- 数列的递推公式求通项(特征方程)
- 解决CentOS7 安装后无法识别windows分区问题
- hdu 1024 把n个数分m组 dp
- 使用laravel开发网站时,如何实现前端导航栏共享数据二种简单的方法
- 【背包专题】D
- 28.Scala提取器Extractor实战详解