目录
使用的数据库配置参考笔记-example数据库内容
项目根目录添加porm文件
4.0.0 com.hao.example MavenMybatis 0.0.1-SNAPSHOT mysql mysql-connector-java 5.1.32 org.mybatis mybatis 3.3.0 org.apache.maven.plugins maven-compiler-plugin src/main/java **/*.properties **/*.xml false src/main/resources **/*.properties **/*.xml false
在src/main/resources下创建数据库对应的实体类:Admin,其符合JavaBean的标准
package com.hao.example.po;public class Admin { private Integer id; private String username; private String password; public Admin() { } 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; } @Override public String toString() { return "Admin [id=" + id + ", username=" + username + ", password=" + password + "]"; }}
在src/main/java下创建AdminMapper接口,用于操作Admin类
AdminMapper和Hibernate中的AdminDao是一个东西,只不过在Mybatis更习惯称为Mapper
package com.hao.example.mapper;import com.hao.example.po.Admin;public interface AdminMapper { public Admin getAdmin(Integer id); public int deleteAdmin(Integer id); public int insertAdmin(Admin admin);}
在src/main/resources下添加数据库配置文件:db.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/example?characterEncoding=utf-8jdbc.username=rootjdbc.password=h66666
在src/main/resources下添加mybatis配置文件:mybatis-config.xml
在AdminMapper接口的同一目录下创建AdminMapper.xml文件
AdminMapper.xml相当于AdminMapper接口的实现类,Mybatis框架会利用动态代理技术,将AdminMapper.xml文件转化为AdminMapper接口的实现类,因此要注意,AdminMapper接口中的函数,在AdminMapper.xml文件中都要有对应的标签,以执行相应的SQL语句
insert into admin(username, password) values(#{username}, #{password}) delete from admin where id = #{id}
创建工具类:SqlSessionFactoryUtil类,用于启动Mybatis,获得Mybatis的相关入口
package com.hao.example.utils;import java.io.InputStream;import java.util.logging.Level;import java.util.logging.Logger;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;/** * 创建SqlSessionFactory的工具类,实现为单例模式 * */public class SqlSessionFactoryUtil { // SqlSessionFactory对象 private static SqlSessionFactory sqlSessionFactory = null; // 类线程锁 private static final ClassCLASS_LOCK = SqlSessionFactoryUtil.class; /** * 私有化默认构造函数 */ private SqlSessionFactoryUtil() { } /** * 构建SqlSessionFactory * @return */ public static SqlSessionFactory initSqlSessionFactory(){ String resource = "mybatis-config.xml"; InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); } catch (Exception e) { Logger.getLogger(SqlSessionFactoryUtil.class.getName()).log(Level.SEVERE, null, e); } // 为了避免并发状态下的SqlSessionFactory不唯一,需要添加锁 synchronized(CLASS_LOCK){ if(sqlSessionFactory == null){ sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } } return sqlSessionFactory; } /** * 获得一个新的Session * @return */ public static SqlSession openSession(){ if(sqlSessionFactory == null){ initSqlSessionFactory(); } return sqlSessionFactory.openSession(); } }
执行main函数,测试代码,若能成功运行则构建正确
package com.hao.example.main;import org.apache.ibatis.session.SqlSession;import com.hao.example.mapper.AdminMapper;import com.hao.example.po.Admin;import com.hao.example.utils.SqlSessionFactoryUtil;public class Main { public static void main(String[] args) throws Exception { SqlSession sqlSession = null; try { sqlSession = SqlSessionFactoryUtil.openSession(); AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class); Admin admin = adminMapper.getAdmin(2); System.out.println(admin); sqlSession.commit(); } catch (Exception e) { System.out.println(e); sqlSession.rollback(); }finally{ if(sqlSession != null){ sqlSession.close(); } } } }