一个简单的mybatis案例

113 阅读1分钟
原文链接: click.aliyun.com

创建一个简单的mybatis 案例:

 

案例功能:

写一个Java 程序通过 mybatis 连接 MySQL 数据库并插入一条记录。

 

项目步骤:

1. 新建一个Java 项目 mybatistest

2. 引入jar 包:

  • log4j-1.2.17.jar
  • mybatis-3.4.6.jar
  • mysql-connector-java-5.1.29.jar

3.src 下新建 2 个包:

  • com.radish.domain
  • com.radish.mapper
  • test

4. 新建表:


CREATE TABLE `tb_user` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(18) DEFAULT NULL,
  `SEX` char(2) DEFAULT NULL,
  `AGE` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;


5. 创建POJO  src/com/radish/domain/User.java:


private Integer id;
private String name;
private String sex;
private Integer age;


省略构造方法和get/set 方法

6.创建 mybatis-config.xml

详见我的另外一篇博文

 

7.创建log4j.properties :


 
log4j.rootLogger=ERROR, stdout
 
log4j.logger.com.radish.mapper.UserMapper=DEBUG
 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n


 

8.创建测试类:


package Test;
 
import java.io.InputStream;
 
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.radish.domain.User;
 
public class MybatisTest {
public static void main(String[] args) throws Exception{
// 读取mybatis-config.xml的配置
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 初始化mybatis,创建SqlSessionFactory类的实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
// 创建session对象
SqlSession session = sqlSessionFactory.openSession();
User user = new User("admin", "男", 26);
session.insert("com.radish.mapper.UserMapper.save", user);
session.commit();
session.close();
}
}


执行结果:

控制台输出日志信息

9bccf31136c725c44248b8713b81ce9d99aa5ec8

数据库:

39912377802b116bca4009e05d54590aa7234bfd


  • 另外提一下在练习中遇到一次preparedstatement is close 的异常提示。这是因为之前在做的时候顺手拉进了一个MySQL的3.X的驱动包,可能是这个版本的驱动包的preparedstatement类的源码实现有差异吧,以后有兴致再回去翻阅,目前是将项目中的驱动jar包改成了5.X的版本,问题解决。


项目在附录中,欢迎指点。