MyBatis-起始

Mybatis: 一种简化sql操作的持久层框架,开发只需要关注具体的sql语句即可
传统的JDBC: 1.操作sql 2.操作 Connection、Statment(向数据库发送sql的一个对象)、ResultSet等
ORM框架: 对象关系匹配,把关系数据库中的数据转换成面向对象程序中的对象
hibernate(全自动sql)和mybatis(自定义sql)
1.pom中引入依赖

mybais只要这一个依赖就完成了 org.mybatis mybatis 3.4.6 但是需要操作数据库,因此引入连接数据库驱动 mysql mysql-connector-java 8.0.26 再加一个测试类的依赖用于测试 junit junit 4.12 test

2.mybatis.xml 编写myBatis核心配置文件(放在resource目录下)

3.pom中引入mapper.xml
为了能够加载到java文件夹下的mapper的xml文件 src/main/java **/*.xml

4.写java代码 pojo/mapper/test
【MyBatis-起始】User
public class User implements Serializable {private Long id; private String name; private Integer points; private String phone; private Timestamp regTime; public User(Long id, String name, Integer points, String phone, Timestamp regTime) { this.id = id; this.name = name; this.points = points; this.phone = phone; this.regTime = regTime; }public User() { } }

UserMapper
public interface UserMapper {voidadd(User user); void deleteById(Long id); voidupdate(User user); List selectAll(); }

UserMapper.xml
insert into `user` (`name`,`phone`,`regTime`) values (#{name},#{phone},#{regTime}) delete from `user` where id=#{id} update `user` set `name`=#{name},`phone`=#{phone},`regTime`=#{regTime} select * from `user`

Test
public class TestUser {UserMapper mapper=null; SqlSession sqlSession = null; @Before //为了获取sqlSession public void init() throws IOException { //Resources:mybatis提供的一个文件流读取工具 InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml"); //实例化一个构建器 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //通过builder得到一个工厂对象 SqlSessionFactory factory = builder.build(resourceAsStream); //通过openSession得到会话对象,默认为手动提交事务 //SqlSession 提供了在数据库执行 SQL 命令所需的所有方法 sqlSession= factory.openSession(); //获得mapper接口的代理对象 mapper= sqlSession.getMapper(UserMapper.class); }@Test public void add(){Timestamp timestamp = new Timestamp(System.currentTimeMillis()); User user = new User("测试",0,"7898",timestamp); //获得代理对象再调方法 mapper.add(user); //sqlSession自带的方法,同样有增删改查,statement参数(第一个参数)要与接口中的方法名一致 sqlSession.insert("add", user); sqlSession.commit(); }@Test public void deleteById(){ mapper.deleteById(37L); sqlSession.commit(); }@Test public void update(){ Timestamp timestamp1 = new Timestamp(System.currentTimeMillis()); User user1 = new User(44L,"测试4",0,"+65+6565+",timestamp1); sqlSession.update("update", user1); sqlSession.commit(); }@Test public void selectAll(){List maps = mapper.selectAll(); System.out.println(maps.size()); for (Map map : maps) { System.out.println(map); } }}

遇到的坑:
1.没有spring管理的时候,想要mapper对象需要自己创建sqlSession
2.没有在pom中引入xml文件,报找不到UserMapper.xml的错
标签配置解析:
mappers: 映射器 , UserMapper.xml文件中配置 映射到具体的Mapper.xml文件

namespace:用于绑定Dao接口
...

environments:环境配置集合 可以配置多种数据库
environment:环境配置 具体的实现
连接池:服务器端一次性向数据库创建多个连接,并将多个连接保存在一个连接池对象当中,下次有请求操作数据库时,直接从连接池获得一个连接,使用完后不关闭而是继续放回连接池当中 ,可节省创建连接/释放连接的资源
//default: development开发模式 work工作模式 //id: 指定当前环境的唯一标识 //transactionManager:事务管理器 type: JDBC-使用JDBC原生的事务管理方式,提交和回滚都需要手动 //datasource: 数据源 type: POOLED-使用连接池 //property:属性, 连接四大件 连接驱动,url,用户名,密码//useSSL:SSL协议用于保证数据安全和正确,默认true

    推荐阅读