mybatis中结果集是如何映射resultType的?

mybatis中结果集是如何映射resultType的?

mybatis框架是对JDBC的封装,在原生JDBC中,prepareStament对象执行完SQL语句后会返回一个结果集,然后通过ResultSet对象的next方法(行指针)判断是否还有下一个结果来进行遍历结果集,在遍历结果集的过程中完成对实体类对象的实例化(一条结果就实例化一个对象),在mybatis中,同样是当我们指定的resultType中的返回类型后,mybatis将得到的结果集进行遍历,在遍历的过程中将数据实例化成resultType指定的对象(一条结果就实例化一个对象)。

//加载驱动,在com.mysql.jdbc.Driver类中有一个静态方法,该静态方法完成了驱动的注册
Class.forName("com.mysql.jdbc.Driver");
//建立连接
String url="jdbc:mysql://localhost:3306/test";
String user="********";
String password="*******";
Connection  conn=DriverManager.getConnection(url,user,password);
//执行SQL语句
	//1.创建一个Statement对象
Statement stmt=conn.createStatement();
	//2.通过Statement对象执行SQL语句,得到一个ResultSet结果集
String sql=" select * from user where id="+id;
ResultSet rs=stmt.executeQuery(sql);
//遍历结果集,实例化实体类
List studentList=new CopyOnWriteArrayList();
while(rs.next()){
	int id=rs.getInt("id");
	String name=rs.getString("name")
	//Student student=new Student(id,name);
	Student student=new Student(n);
	student.setId(id);
	student.setName(name);
	student.setAge(rs.getInt("age"));
	studentList.add(student);
	String username=rs.getString("username");
}
//加载驱动,在com.mysql.jdbc.Driver类中有一个静态方法,该静态方法完成了驱动的注册
Class.forName("com.mysql.jdbc.Driver");
//建立连接
String url="jdbc:mysql://localhost:3306/test";
String user="********";
String password="*******";
Connection  conn=DriverManager.getConnection(url,user,password);
//执行SQL语句
	//1.通过占位符创建SQL语句
String sql=" select * from user where id=(?)";
	//2.创建一个PrepareStatement对象
PreparedStatement pstmt=conn.prepareStatement(sql);
	//3.给占位符设置值
pstmt.setInt(1,id);
	//4.通过PrepareStatement对象执行SQL语句,得到一个ResultSet结果集
ResultSet rs=pstmt.executeQuery();
//遍历结果集,实例化实体类
List studentList=new CopyOnWriteArrayList();
while(rs.next()){
	int id=rs.getInt("id");
	String name=rs.getString("name")
	//Student student=new Student(id,name);
	Student student=new Student(n);
	student.setId(id);
	student.setName(name);
	student.setAge(rs.getInt("age"));
	studentList.add(student);
	String username=rs.getString("username");
}

使用Preparestatement批量插入

String sql = "insert into happi_data (name,data,timestamp) values (?,?,?)";
PreparedStatement prepareStatement = connection.prepareStatement(sql);
for(int i = 0 ; i < 500 ; i ++ ) {
	prepareStatement.setString(1,value1)
	prepareStatement.setString(2,value1)
	prepareStatement.setString(3,value1)
	prepareStatement.addBatch();//调用addBach方法,将数据添加到Batch缓存池
}
prepareStatement.executeBatch();//执行批量添加
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatisresultMap和resultType是用于在查询进行结果映射的两种方式。它们的区别如下: 1. 对象不同:resultType是直接指定返回类型,而resultMap是一个定义了结果映射规则的对象。 2. 描述不同:resultType通过属性名来进行结果映射,只有查询出来的列名与属性名一致时才能成功映射。而resultMap可以通过配置来定义复杂的映射规则,可以自由地对查询结果进行处理和映射。 3. 类型适用不同:resultType适用于简单的查询结果映射,当查询结果的列名和属性名一致时比较方便。而resultMap适用于复杂的查询结果映射,可以灵活地处理和映射不同的查询结果。 总结来说,resultType是一种简单的结果映射方式,适用于列名和属性名一致的情况;而resultMap是一种更为灵活和强大的结果映射方式,可以自定义映射规则来处理复杂的查询结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [mybatisresultmap与resulttype区别](https://blog.csdn.net/s_156/article/details/124865877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [mybatisresultMap和resultType区别,三分钟读懂](https://blog.csdn.net/qq_42176665/article/details/127938652)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值