使用MyBatis写一个增删改查的操作

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

对数据库进行增删改查我们一开始使用JDBC使用原始的方法我们要写大量的代码。后来我们了解了框架例如:hibernate虽然我们可以减少对数据的操作,但是当我们遇到复杂的数据操作的时候这个时候我们就要去了解hql。还是没有明确的解决我们对数据的操作。

但是MyBatis 可以帮我们跟好的进行对数据的操作。话不多说我们直接上代码掩饰:

项目的整体架构:


我们现在没有页面只能利用测试类进行掩饰:

我们要创建一个mybatis-config.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>

<settings>
    <setting name="logImpl" value="LOG4J"/>
  </settings>
  
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/Stu"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/hp/member/MemberMapper.xml"/>
  </mappers>
</configuration>
MemberMapper.xml:
<?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.hp.member.MemberMapper">
<!--   <select id="selectMember" resultType="com.hp.bean.Member"> -->
<!--     select * from Member where uid = #{uid} -->
<!--   </select> -->
  
  <insert id="addMember" parameterType="com.hp.bean.Member">  
        insert into Member(username,userpwd) values(#{username},#{userpwd})
  </insert>  
  
<!--     <delete id="deleteByUid" parameterType="com.hp.bean.Member">   -->
<!--         delete from Member where uid=#{uid}   -->
<!--     </delete>  -->
    <!-- 代码中我使用的两种方式进行对数据库的编写 第一种就是使用注解的方式在配置文件里不写任何的SQL语句例如:添加和删除。第二种方式是在配置文件里写SQL语句 -->
     <update id="updateMember" parameterType="com.hp.bean.Member">  
        update Member set username=#{username},userpwd=#{userpwd} where uid=#{uid}   
    </update>  
    
     <select id="getAllMember" resultType="com.hp.bean.Member">  
        select * from Member  
    </select> 
  
</mapper>

实体类Member.java:

public class Member {
	private Integer uid;
	private String username;
	private String userpwd;
	
	public Integer getUid() {
		return uid;
	}
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpwd() {
		return userpwd;
	}
	public void setUserpwd(String userpwd) {
		this.userpwd = userpwd;
	}
	@Override
	public String toString() {
		return "Member [uid=" + uid + ", username=" + username + ", userpwd=" + userpwd + "]";
	}

}

我们创建一个接口,这个接口不用我们去继承,MemberMapper.java:

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;

import com.hp.bean.Member;

public interface MemberMapper {
	//使用注解的方式
	@Select(" select * from Member where uid = #{uid}")
	public Member selectMember(int uid);
	
	public void addMember(Member member);
	//使用注解的方式
	@Delete("delete from Member where uid=#{uid}")
    public void deleteByUid(Member member);  
    
    public void updateMember(Member member); 
      
    public List<Member> getAllMember();  

}
测试类:MyBatis.java;测试我使用的是JUnit测试的:
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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 org.junit.Test;

import com.hp.member.MemberMapper;

public class MyBatis {

	@Test //查询单个方法1
	public void test() {
		//1.加载资源
		String resource = "mybatis-config.xml";
		InputStream inputStream = null;
		SqlSessionFactory sqlSessionFactory = null;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//2.创建session工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//3.获取session
		SqlSession session = sqlSessionFactory.openSession();
		
		//4.执行sql
		Member member = session.selectOne("com.hp.member.MemberMapper.selectMember",2);
		System.out.println(member);
		
		//5.关闭session
		session.close();
	}

	@Test //查询单个方法2
	public void test1() {
		//1.加载资源
		String resource = "mybatis-config.xml";
		InputStream inputStream = null;
		SqlSessionFactory sqlSessionFactory = null;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//2.创建session工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//3.获取session
		SqlSession session = sqlSessionFactory.openSession();
		
		//4.执行sql
		MemberMapper memberMapper = session.getMapper(MemberMapper.class);
		Member member = memberMapper.selectMember(2);
		System.out.println(member);
		
		//5.关闭session
		session.close();
	}
	
	@Test  //添加
	public void add() {
		//1.加载资源
		String resource = "mybatis-config.xml";
		InputStream inputStream = null;
		SqlSessionFactory sqlSessionFactory = null;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//2.创建session工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//3.获取session
		SqlSession session = sqlSessionFactory.openSession();
		
		//4.执行sql
		MemberMapper memberMapper = session.getMapper(MemberMapper.class);
		Member member = new Member();
		member.setUsername("wa222eawu");
		member.setUserpwd("222qq11");
		memberMapper.addMember(member);
	    System.out.println(memberMapper);  
		//5.关闭session
	    session.commit();
		session.close();
	}
	
	@Test  //删除
	public void delete() {
		//1.加载资源
		String resource = "mybatis-config.xml";
		InputStream inputStream = null;
		SqlSessionFactory sqlSessionFactory = null;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//2.创建session工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//3.获取session
		SqlSession session = sqlSessionFactory.openSession();
		
		//4.执行sql
		MemberMapper memberMapper = session.getMapper(MemberMapper.class);
		Member member = new Member();
		member.setUid(12);
		memberMapper.deleteByUid(member);
		//5.关闭session
	    session.commit();
		session.close();
		
	}
	
	@Test  //更新
	public void update() {
		//1.加载资源
		String resource = "mybatis-config.xml";
		InputStream inputStream = null;
		SqlSessionFactory sqlSessionFactory = null;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//2.创建session工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//3.获取session
		SqlSession session = sqlSessionFactory.openSession();
		
		//4.执行sql
		MemberMapper memberMapper = session.getMapper(MemberMapper.class);
		Member member = new Member();
		member.setUid(2);
		member.setUsername("niuhiu");
		member.setUserpwd("dwedesf");
		memberMapper.updateMember(member);
		//5.关闭session
	    session.commit();
		session.close();
		
	}
	
	@Test //查询所有
	public void getAll() {
		//1.加载资源
		String resource = "mybatis-config.xml";
		InputStream inputStream = null;
		SqlSessionFactory sqlSessionFactory = null;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//2.创建session工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//3.获取session
		SqlSession session = sqlSessionFactory.openSession();
		
		//4.执行sql
		MemberMapper memberMapper = session.getMapper(MemberMapper.class);
		List<Member> listmember = memberMapper.getAllMember();
		System.out.println(listmember);
		//5.关闭session
	    session.commit();
		session.close();
		
		
	}
	

}

 使用log4j进行打印的  log4j.properties:

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.hp.member.MemberMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n






  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值