MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
对数据库进行增删改查我们一开始使用JDBC使用原始的方法我们要写大量的代码。后来我们了解了框架例如:hibernate虽然我们可以减少对数据的操作,但是当我们遇到复杂的数据操作的时候这个时候我们就要去了解hql。还是没有明确的解决我们对数据的操作。
但是MyBatis 可以帮我们跟好的进行对数据的操作。话不多说我们直接上代码掩饰:
项目的整体架构:
我们现在没有页面只能利用测试类进行掩饰:
我们要创建一个mybatis-config.xml文件:
MemberMapper.xml:
insert into Member(username,userpwd) values(#{username},#{userpwd})
update Member set username=#{username},userpwd=#{userpwd} where uid=#{uid}
实体类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 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 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