MyBatis3_轻松入门_2

本文详细介绍了使用MyBatis操作数据库的CURD操作,包括使用Mapper接口实现数据库查询、添加、更新和删除操作,并特别强调了如何通过封装对象实现多条件查询。同时,提供了完整的XML配置示例,以及使用方法和测试类实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis3

博文目录

  1.  使用Mapper接口形式操作数据库
  2. 对数据库的CURD操作的配置

 

在上一篇博客中我们已经实现了对简单数据库的查询,在本篇博客中,我们继续深入探讨MyBatis操作数据库的更深层的东西(木有高深的东西,一练就会)!

 

问题:

User user=(User) session.selectOne("com.cn.mapper.UserMapper.findById", 2);

 

我们的selectOne方法可以接收一个或两个参数,第一个参数是我们的查询方法第二个参数使我们给方法传入的参数,并且MyBatis只支持传入一个参数!

 

如果我们要通过用户名和用户密码来查一个用户(假设他俩可以唯一确定一个值),该怎么实现呢??

 

MyBatis要求,如果你要传入多个选择条件,请封装成一个对象给我传进来

 

这是很不方便的,并且每次查询我都要写那么长的完全限定名也是不爽的,我们使用下面的一种新的方式进行查询操作!

 

 

在mapper包中建立与我们配置的UserMapper.xml名称相同的一个接口:UserMapper.java,并且里面提供一个与我们配置的相同的方法:findById(int id);

package com.cn.mapper;

import com.cn.pojo.User;
//UserMapper接口名=配置的UserMapper.xml的名
public interface UserMapper {
	//方法对应UserMapper.xml中的select中的ID=findById,参数对应配置中的parameterType类型,返回值也对应
	public User findById(int id);
}

 实现另一种方式的查询:

package com.cn.test;

import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.cn.mapper.UserMapper;
import com.cn.pojo.User;

public class MyBatis {

	public static void main(String[] args) throws Exception {
		Reader reader=Resources.getResourceAsReader("mybatis.xml");
		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
		SqlSession session=factory.openSession();
		
		//MyBatis自动帮你生成接口的实现类
		UserMapper userMapper=session.getMapper(UserMapper.class);
		//使用接口实现类对象调用方法获取查询结果
		User user=userMapper.findById(1);
		System.out.println(user.getUsername());
		
		/*User user=(User) session.selectOne("com.cn.mapper.UserMapper.findById", 2);
		System.out.println(user.getUsername());*/
		
		session.close();
	}
}

 

 下面我们使用这种方式进行其他数据库操作:

添加操作

 在UserMapper.xml中添加一条语句:

<insert id="save" parameterType="User">
	insert into t_user(username,password) values(#{username},#{password})
</insert>

 

 在UserMapper.java中添加一个方法:

public void save(User user);

  测试类的main方法:

package com.cn.test;

import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.cn.mapper.UserMapper;
import com.cn.pojo.User;

public class MyBatis {

	public static void main(String[] args) throws Exception {
		Reader reader=Resources.getResourceAsReader("mybatis.xml");
		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
		SqlSession session=factory.openSession();
		
		User user=new User();
		user.setUsername("mybatis");
		user.setPassword("000000");
		
		UserMapper userMapper=session.getMapper(UserMapper.class);
		userMapper.save(user);
		//insert update delete操作都需要事务的支持,事务必须提交后才有效
		//事务提交有两种方式:1,下面这种,2,在上面的factory.openSession()参数列表中写个true:openSession(true);表示自动提交事务
		session.commit();
		
		session.close();
	}
}

 

 下面的是完整的CURD配置

<?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"> 
<mapper namespace="com.cn.mapper.UserMapper"> 
	
	<select id="findById" parameterType="int" resultType="User"> 
	  select id,username,password from t_user where id = #{id} 
	</select> 
 
 	<insert id="save" parameterType="User">
 		insert into t_user(username,password) values(#{username},#{password})
 	</insert>
 	
 	<update id="edit" parameterType="User">
 		update t_user set username=#{username},password=#{password} where id=#{id}
 	</update>
 	
 	<delete id="del" parameterType="int">
 		delete from t_user where id=#{id}
 	</delete>

	<select id="findByUsernamePassword" parameterType="User" resultType="User">
 		select id,username,password from t_user where username=#{username} and password=#{password}
 	</select>
</mapper> 

 

package com.cn.mapper;

import com.cn.pojo.User;

public interface UserMapper {
	
	public User findById(int id);
	public void save(User user);
	public void edit(User user);
	public void del(int id);
	public User findByUsernamePassword(User user);
}

 

用这种方法可以解决上面提到的问题:多条件查询。使用原始的也是可以的,他俩基本没啥区别!

这篇博文先写到这里,下一篇继续介绍查询:连接查询

 

 

 

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值