刚开始学习Mybatis能够先看下官方文档,MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎全部的JDBC代码和手工设置参数以及抽取结果集。MyBatis使用简单的XML或注解来配置和映射基本体,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。java
下面进入正题:
工具:Navicat premium 、IntelliJ IDEAmysql
简单的目录结构sql
1.建立mysql数据库
建立一个firend_mq数据库,创建一张表为 users ,并插入一些数据数据库
2.新建一个maven项目,并导入依赖mybatis
org.mybatismybatis3.4.6mysqlmysql-connector-java5.1.47junitjunit4.12test
3.在resources文件夹下新建mybatis-config.xml,编写mybaits的核心配置文件app
注意点:resource绑定mapper,须要使用路径,使用"/"
链接mysql数据库的时候可能会出现时区的问题,能够看这篇博客
idea链接mysql时区问题解决方案(永久)框架
4.编写mybatis工具类maven
//SqlSessionFactory public class Mybatisutil { private static SqlSessionFactory sqlSessionFactory; static { try {//使用mybaatis第一步获取SqlSessionFactory对象 String resource="mybatis-config.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //有了 SqlSessionFactory,顾名思义,咱们能够从中得到 SqlSession 的实例。SqlSession // 提供了在数据库执行 SQL 命令所需的全部方法。你能够经过 SqlSession 实例来直接执行已映射的 SQL 语句 public static SqlSession getSqlSession(){ SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } }
5.编写mybatis实体类ide
package pojo; public class User { private int id; private String username; private String password; public User(int id, String username, String password) { this.id = id; this.username = username; this.password = password; } public User() { } public int getId() { return id; } public void setId(int 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 "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
前期的准备工做已完毕,开始编写代码工具
6.编写Dao层的接口
public interface UserDao { //查询全部用户 ListgetUserList(); //查询指定id用户 User getUserById(int id); //添加一个用户 int addUser(User user); //修改用户 int updateUser(User user); //删除一个用户 int deleteUser(int id); }
7.编写接口实现类
接口实现类由原来的UserDaoImpl转变为Mapper配置文件夹
select * from firend_mq.usersselect * from firend_mq.users where id = #{id}insert into firend_mq.users (id,username,password) value (#{id},#{username},#{password})update firend_mq.users set username=#{username},password=#{password} where id=#{id};delete from firend_mq.users where id=#{id}
注意点:
8.编写测试类
public class UserDaoText { //查询全部用户 @Test public void getUserList(){ //第一步:得到sqlSession对象 SqlSession sqlSession = Mybatisutil.getSqlSession(); //方式一:getMapper UserDao mapper = sqlSession.getMapper(UserDao.class); ListuserList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } sqlSession.close(); } // 查询指定id用户 @Test public void getUserById(){ SqlSession sqlSession = Mybatisutil.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); User user = mapper.getUserById(2); System.out.println(user); sqlSession.close(); } //全部的增删改都要提交事务 //添加一个用户 @Test public void addUser(){ SqlSession sqlSession = Mybatisutil.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); mapper.addUser(new User(4,"张三","10086")); //提交事务 sqlSession.commit(); sqlSession.close(); } @Test public void updateUser(){ SqlSession sqlSession = Mybatisutil.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); mapper.updateUser(new User(4,"哈哈","123")); sqlSession.commit(); sqlSession.close(); } @Test public void deleteUser(){ SqlSession sqlSession = Mybatisutil.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); mapper.deleteUser(4); sqlSession.commit(); sqlSession.close(); } }
这样一个简单Mybatis的增删改查就写完了,细节都在代码中由注释。