增删改(DML)操作

  1. 增删改(DML)操作

     1.1事务(transaction)

  • 事务是数据库操作的最小单元,又ACID的特性,应该保证一个事务的sql语句要么同时成功,要么都不成功。
  • Mybatis中配置了事务管理器,type属性设置为JDBC。表示M ybatis采用和原生JDBC相同的事务管理机制。
  • 在Mybatis执行的开始时,将自动提交功能关闭了。所以,在执行DML操作时,需要手动提交事务。

      1.2新增(insert)

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5   <configuration>
 6       <properties resource="db.properties"/>
 7       <settings>
 8           <!-- 设置MyBatis使用log4j日志支持 -->
 9           <setting name="logImpl" value="LOG4J"/>
10       </settings>
11       <!-- typeAliases给类型取别名 -->
12       <typeAliases>
13           <!-- 给user类取别名 -->
14           <!-- <typeAlias type="com.bjsxt.pojo.User" alias="u"/> -->
15           <!-- 别名都是类的名字 -->
16           <package name="com.bjsxt.pojo"/>
17       </typeAliases>
18       <!-- 用于指定使用哪个开发
19                                 用于指定使用的环境id
20        -->
21       <environments default="dev">
22           <!-- 用于配置开发环境
23                id:环境的唯一识别码
24            -->
25           <environment id="dev">
26               <!-- 事务管理器
27                    type:用于设定mybatis采用什么方式管理事务
28                    JDBC表示和JDBC一样事务的管理方式
29                -->
30               <transactionManager type="JDBC"/>
31               <!-- 数据源/连接池
32                                                          用于配置链接池和数据库链接的参数
33                    type:用于设置mybatis是否采用链接池技术
34                                                         连接池:用来存数据库链接的,减少数据库的频繁开关
35                    POOLED表示mybatis采用连接池技术                                     
36                -->
37               <dataSource type="POOLED">
38                   <property name="driver" value="${jdbc.driver}"/>
39                   <property name="url" value="${jdbc.url}"/>
40                   <property name="username" value="${jdbc.username}"/>
41                   <property name="password" value="${jdbc.password}"/>
42               </dataSource>
43           </environment>
44       </environments>
45       <!-- 扫描mapper文件 -->
46       <!-- 文件的全限制路径要用/ -->
47       <mappers>
48           <mapper resource="com/bjsxt/mapper/UserMapper.xml"/>
49       </mappers>
50   </configuration>


1
<?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-|3-mapper.dtd"> 5 <!-- namespa:命名空间,可以随意定义,一般情况下要写全限定路径(包名加类) 6 MyBatis管理SQL语句是通过namespace+id来定位的 7 --> 8 <mapper namespace="com.bjsxt.mapper.UserMapper"> 9 <!-- 新增 --> 10 <insert id="insUser" parameterType="user" > 11 insert into t_user values (default,#{username},#{password}) 12 </insert> 13 14 </mapper>

 

 1 package com.bjsxt.util;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11 public class MyBatisUtil {
12     
13     private static SqlSessionFactory factory=null;
14     static{
15         
16         try {
17             InputStream is=Resources.getResourceAsStream("mybatis.xml");
18             factory=new SqlSessionFactoryBuilder().build(is);
19         } catch (IOException e) {
20             // TODO Auto-generated catch block
21             e.printStackTrace();
22         }
23     }
24 
25     public static SqlSession getSession(){
26         SqlSession session =null;
27         if(factory!=null){
28             //true表示开启
29          session= factory.openSession(true);
30         }
31         return session;
32     }
33 }

 

 

 1 package com.bjsxt.test;
 2 
 3 import org.apache.ibatis.session.SqlSession;
 4 import org.junit.Test;
 5 
 6 import com.bjsxt.pojo.User;
 7 import com.bjsxt.util.MyBatisUtil;
 8 
 9 public class TestInsert {
10 @Test
11     public void testIns(){
12         SqlSession session = MyBatisUtil.getSession();
13         User user=new User();
14         user.setUsername("XIAOWEI");
15         user.setPassword("123");
16         
17         int num=session.insert("com.bjsxt.mapper.UserMapper.insUser",user);
18         if(num>0){
19             //提交事务
20             //session.commit();
21             System.out.println("SUCCESS!");
22         }else{
23             //session.rollback();
24             System.out.println("FAILED!");
25         }
26         //
27         session.close();
28     }
29 }

 

1.4修改和删除

 

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-|3-mapper.dtd">
 5   <!-- namespa:命名空间,可以随意定义,一般情况下要写全限定路径(包名加类)
 6        MyBatis管理SQL语句是通过namespace+id来定位的
 7    -->
 8 <mapper namespace="com.bjsxt.mapper.UserMapper">
 9    <!-- 新增 -->
10  <insert id="insUser"  parameterType="user" >
11      insert into t_user values (4,#{username},#{password})
12  </insert>
13  
14  
15  <!-- 修改 -->
16  <update id="updUser"  parameterType="user" >
17     update  t_user set username=#{username},password=#{password} where id=#{id}
18  </update>
19  
20  <!-- 删除 -->
21  <delete id="delUser" parameterType="int">
22      delete from t_user where id=#{0}
23  </delete>
24 </mapper>

 

 

 

 1 package com.bjsxt.test;
 2 
 3 import org.apache.ibatis.session.SqlSession;
 4 import org.junit.Test;
 5 
 6 import com.bjsxt.pojo.User;
 7 import com.bjsxt.util.MyBatisUtil;
 8 
 9 public class TestInsert {
10     @Test
11     public void testDel(){
12         SqlSession session =MyBatisUtil.getSession();
13         
14     int num=session.update("com.bjsxt.mapper.UserMapper.delUser", 9);
15         if(num>0){
16             session.commit();
17             System.out.println("success");
18             
19         }else
20         {
21             System.out.println("false");
22             session.rollback();
23         }
24         session.close();
25     }
26     @Test
27     public void testUpd(){
28         SqlSession session = MyBatisUtil.getSession();
29         
30         User user1=new User();
31         user1.setId(4);
32         user1.setUsername("daming");
33         user1.setPassword("abc");
34         
35     int num=session.update("com.bjsxt.mapper.UserMapper.updUser", user1);
36         if(num>0){
37             session.commit();
38             System.out.println("success");
39             
40         }else
41         {
42             System.out.println("false");
43             session.rollback();
44         }
45         session.close();
46     }
47 @Test
48     public void testIns(){
49         SqlSession session = MyBatisUtil.getSession();
50         User user=new User();
51         user.setUsername("XIAOWEI");
52         user.setPassword("123");
53         
54         int num=session.insert("com.bjsxt.mapper.UserMapper.insUser",user);
55         if(num>0){
56             //提交事务
57             //session.commit();
58             System.out.println("SUCCESS!");
59         }else{
60             //session.rollback();
61             System.out.println("FAILED!");
62         }
63         //
64         session.close();
65     }
66 }

 

转载于:https://www.cnblogs.com/wq-9/p/10222568.html

内容概要:该研究通过在黑龙江省某示范村进行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、付费专栏及课程。

余额充值