MyBatis入门示例

简介:

说明:

1,本文采用的Mybatis框架版本为: mybatis-3.0.4.jar

2, 以持久化一个简单的User bean为例

User实体类的代码如下:

 
 
  1. package bean;
  2. public class User {
  3. private String name;
  4. private Integer age;
  5. public String getName() {
  6. return name;
  7. }
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. public Integer getAge() {
  12. return age;
  13. }
  14. public void setAge(Integer age) {
  15. this.age = age;
  16. }
  17. public User(String name, Integer age) {
  18. super();
  19. this.name = name;
  20. this.age = age;
  21. }
  22. public User() {
  23. super();
  24. } //必须要有这个无参构造方法,不然根据UserMapper.xml中的配置,在查询数据库时,将不能反射构造出User实例
  25. }

User实体的映射器取名为UserMapper(接口),其代码如下

 
 
  1. package Mapper;
  2. import bean.User;
  3. public interface UserMapper {
  4. public void insertUser(User user);
  5. public User getUser(String name);
  6. }

注意,该接口类似于Hibernate中的DAO层接口,唯一不同的是,MyBatis中,只声明该接口就可以,不需要去实现.

UserMapper映射器对应的配置文件如下(相当于Hibernate中的User.hbm.xml,当然这里面不是属性映射字段,而是直接是映射器中各种方法对应的sql语句)

 
 
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="Mapper.UserMapper">
  6. <!-- 这里namespace必须是UserMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry”-->
  7. <insert id="insertUser" parameterType="User">
  8. insert into vincent_user(name,age) values(#{name},#{age})
  9. <!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->
  10. </insert>
  11.  
  12. <!-- 这里的id必须和UserMapper接口中的接口方法名相同,不然运行的时候也要报错 -->
  13. <select id="getUser" resultType="User" parameterType="java.lang.String">
  14. select * from vincent_user where name=#{name}
  15. </select>
  16. </mapper>

MyBatis的配置文件这里取名为mybatis-config.xml其配置代码如下(相当与Hibernatehibernate.cfg.xml):


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <!-- changes from the defaults for testing -->
  8. <setting name="cacheEnabled" value="false" />
  9. <setting name="useGeneratedKeys" value="true" />
  10. <setting name="defaultExecutorType" value="REUSE" />
  11. </settings>
  12. <typeAliases>
  13. <typeAlias alias="User" type="bean.User"/>
  14. </typeAliases>
  15. <environments default="development">
  16. <environment id="development">
  17. <transactionManager type="jdbc"/>
  18. <dataSource type="POOLED">
  19. <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
  20. <property name="url" value="jdbc:oracle:thin:@192.168.56.201:1521:system"/>
  21. <property name="username" value="vincent"/>
  22. <property name="password" value="1234"/>
  23. </dataSource>
  24. </environment>
  25. </environments>
  26. <mappers>
  27. <mapper resource="resource/UserMapper.xml" />
  28. </mappers>
  29. </configuration>

加载配置文件得到sqlSessionFactory的工具类

 
 
  1. package Util;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. public class MyBatisUtil {
  8. private final static SqlSessionFactory sqlSessionFactory;
  9. static {
  10. String resource = "resource/mybatis-config.xml";
  11. Reader reader = null;
  12. try {
  13. reader = Resources.getResourceAsReader(resource);
  14. } catch (IOException e) {
  15. System.out.println(e.getMessage());
  16. }
  17. sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  18. }
  19. public static SqlSessionFactory getSqlSessionFactory() {
  20. return sqlSessionFactory;
  21. }
  22. }

测试代码如下:


 
 
  1. package TestMapper;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import org.junit.Test;
  5. public class TestMapper {
  6. static SqlSessionFactory sqlSessionFactory = null;
  7. static {
  8. sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
  9. }
  10. @Test
  11. public void testAdd() {
  12. SqlSession sqlSession = sqlSessionFactory.openSession();
  13. try {
  14. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  15. User user = new User("tom",new Integer(5));
  16. userMapper.insertUser(user);
  17. sqlSession.commit();//这里一定要提交,不然数据进不去数据库中
  18. } finally {
  19. sqlSession.close();
  20. }
  21. }
  22. @Test
  23. public void getUser() {
  24. SqlSession sqlSession = sqlSessionFactory.openSession();
  25. try {
  26. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  27. User user = userMapper.getUser("jun");
  28. System.out.println("name: "+user.getName()+"|age: "+user.getAge());
  29. } finally {
  30. sqlSession.close();
  31. }
  32. }
  33. }




本文转自 vfast_chenxy 51CTO博客,原文链接:http://blog.51cto.com/chenxy/1151807,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
关系型数据库 Java 数据库连接
MyBatis-Plus简介和入门操作
【1月更文挑战第5天】 一、MyBatis-Plus简介 二、 MyBatis-Plus操作 1、准备数据库脚本 2、准备boot工程 3、导入依赖 4、配置文件和启动类 5、功能编码 6、测试和使用
105 1
|
5月前
|
SQL Java 数据库连接
Mybatis入门简介
Mybatis入门简介
57 0
|
3月前
|
SQL Java 数据库连接
JAVAEE框架技术之7-myBatis ORM框架入门基础CRUD
JAVAEE框架技术之7-myBatis ORM框架入门基础CRUD
90 0
JAVAEE框架技术之7-myBatis ORM框架入门基础CRUD
|
1月前
|
SQL JavaScript Java
mybatis-flex入门体验(一)
`shigen`,一个专注于Java、Python、Vue和Shell的博主,分享成长和认知。近期探索了`mybatis-flex`,通过官网学习了代码生成和编码体验。配置数据源和依赖后,利用示例代码生成了符合Lombok+MyBatis Plus规范的实体和Mapper。此外,展示了如何配置SQL打印,并用测试代码演示了查询、多条件查询和更新操作。`mybatis-flex`的亮点在于流畅的查询语法和连表查询功能。后续将分享更多关于连表查询的实践。一起学习,每天进步!
35 0
mybatis-flex入门体验(一)
|
1月前
|
Java 数据库连接 mybatis
|
2月前
|
XML Java 数据库连接
MyBatis入门配置
【2月更文挑战第9天】
MyBatis入门配置
|
3月前
|
Java 数据库连接 API
MyBatis入门操作
MyBatis入门操作
13 0
|
3月前
|
Java 数据库连接 测试技术
【MyBatis】操作数据库——入门
【MyBatis】操作数据库——入门
|
3月前
|
SQL Java 关系型数据库
一文彻底搞懂Mybatis系列(一)之mybatis入门
一文彻底搞懂Mybatis系列(一)之mybatis入门
|
4月前
|
SQL Java 数据库连接
MyBatis Plus 入门
MyBatis Plus 入门
51 0