在学习Mybatis时我们应该先知道为什么要学习mybatis,mybatis有什么,mybatis能做什么?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
在此可以引出一个问题什么是半自动化的ORM呢?
以下是项目的结构
如果使用myeclipse等工具注意jar包放在lib文件里
要下载的jar包(官方):
mysql驱动 jar包:https://dev.mysql.com/downloads/connector/j/
junit测试 jar包:https://junit.org/junit4/
mybatis jar包:https://github.com/mybatis
log4j日志文件 jar包:http://logging.apache.org/log4j/2.x/download.html
log4j
log4j
1.2.12
mysql
mysql-connector-java
5.1.28
org.mybatis
mybatis
3.2.8
junit
junit
4.10
log4j所用代码可以从官网找到
log4j.rootLogger=DEBUG,CONSOLE,file
log4j.logger.cn.smbms.dao=debug
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
log4j.logger.com.opensymphony.xwork2=error
创建database.properties文件
以下是我项目的结构
如果使用myeclipse等工具注意jar包放在lib文件里
public class Tuser {
private Integer id;
private String userName,password,nickName;
@Override
public String toString() {
return "Tuser{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
", nickName='" + nickName + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
}
@Test
public void QueryCount() {
String source="mybatis-config.xml";
int count=0;
SqlSession sqlSession=null;
try {
//1 获取mybatis-config.xml的输入流
InputStream is = Resources.getResourceAsStream(source);
//2 创建一个工厂,完成对配置文件的读取
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
//3 创建sqlSession,开启工厂
sqlSession=sqlSessionFactory.openSession();
//4 根据放入工厂的sql语句执行不同的方法
count=sqlSession.selectOne("com.bdqn.dao.TUserMapper.queryCount");
System.out.println(count);
} catch (IOException e) { e.printStackTrace(); }finally { sqlSession.close(); } }}
@Test
public void queryALLTest(){
SqlSession sqlSession=null;
try {
//1 获取mybatis-config.xml的输入流
InputStream is = Resources.getResourceAsStream(source);
//2 创建一个工厂,完成对配置文件的读取
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
//3 创建sqlSession,开启工厂
sqlSession=sqlSessionFactory.openSession();
//4 根据放入工厂的sql语句执行不同的方法
package cn.jdbc.util;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession createSqlSession(){
return sqlSessionFactory.openSession();
}
public static void closeSqlSession(SqlSession sqlSession){
if(sqlSession!=null){
sqlSession.close();
}
}
}
public interface TuserMapper {
//查询全部用户信息
List queryAll();
//模糊查询,查询通过用户名查询用户信息
List getUserListByUserName(String name);
//修改数据
public Integer updateTuser(Name name);
//删除用户数据
Integer deleteTuserByid(Integer id);
//插入数据
Integer addTuser(Name name);
}
//获取全部用户信息
public void queryAll(){
SqlSession sqlSession=null;
sqlSession=MybatisUtil.createSqlSession();
//第一种方法 通过全限定名获取信息
// List n=sqlSession.selectList("cn.jdbc.dao.TuserTest.queryAll");
//第二种方法 通过接口返回信息引入映射文件中
List n=sqlSession.getMapper(TuserMapper.class).queryAll();
if(n!=null){
for (Name tuser : n) {
System.out.println(tuser);
}
}
}
//添加
public void addTuser(){
SqlSession sqlSession=null;
Tuser user=new Tuser();
user.setUserName("admin");
user.setPassword("121212");
user.setNickName("mingming");
int rows=0;
sqlSession = MybatisUtil.createSqlSession();
rows=sqlSession.getMapper(TuserMapper.class).addTuser(name);
sqlSession.commit();
if(rows>0){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}
MybatisUtil.closeSqlSession(sqlSession);
}
//修改
public void testUpdateTuser(){
SqlSession sqlSession=null;
Tuser user=new Tuser();
user.setUserName("admin33");
user.setPassword("00000");
user.setId(002);
user.setNickName("ming");
//删除
public void testDeletTuserByid(){
SqlSession sqlSession=null;
int delete=0;
sqlSession = MybatisUtil.createSqlSession();
delete=sqlSession.getMapper(TuserMapper.class).deleteTuserByid(1);
sqlSession.commit();
if(delete>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
MybatisUtil.closeSqlSession(sqlSession);
}
此文是笔者初学乍练,准备不足之作,如有错误,欢迎向笔者提出,以避免笔者误导其他读者。