由于之前项目用到的都是Hibernate,现在突然改用MyBatis,所以要重新研究一下,还好基本原理是差不离。在Hibernate的基础上再去学MyBatis,个人觉得起到了事半功倍的作用。
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
好,创建JavaWeb项目这些太基础咱们就不去说了,添加相应的Jar包,一个是mybatis的jar包mybatis-3.2.8.jar,一个是数据库驱动的,我用的是mysql所以是mysql-connector-java-3.0.14-production-bin.jar。
添加Mybatis的配置文件conf.xml
在src目录下创建一个conf.xml文件,如下图所示:
文章图片
conf.xml文件中的内容如下:
定义表对应的实体类
public class User {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
定义操作user表的sql映射文件user.xml,我直接放在实体类对应的包下
文章图片
user.xml文件的内容如下:
insert into user (name,password) values (#{name},#{password})
resultType="com.ucs.test.model.User">
select * from user where id=#{id}
在conf.xml文件中注册user.xml文件
【Mybatis练习(1)】
编写测试代码:执行定义的语句
public class Test {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String resource = "conf.xml";
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
// InputStream is =
// Test.class.getClassLoader().getResourceAsStream(resource);
// 构建sqlSession的工厂
// SqlSessionFactory sessionFactory = new
// SqlSessionFactoryBuilder().build(is);
// 使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
// 构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// 创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.ucs.test.model.User.getUser";
// 映射sql的标识字符串
// com.ucs.test.model.user
// 执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, 1);
session.close();
System.out.println("name:"+user.getName());
}
}
最后有问题可以联系qq:1774900724
推荐阅读
- 框架|Mybatis的一级缓存和二级缓存
- Mybatis日志工厂
- MyBatis的功能架构是怎样的
- Mybatis入门之CRUD
- mybatis之缓存机制
- Java|MyBatis(五)——MyBatis中的缓存机制
- mybatis之脚本解析器
- mybatis|记mybatis查询null字段导致的NPE
- Mybatis 动态查询、插入、修改操作