原始jdbc操作数据库开发比较麻烦要频繁地创建关闭而且与SQL语句耦合了(在代码中不易更改,)
基于java的持久层 框架,封装了jdbc通过xml或者注解方式动态映射成SQL语句,来执行后映射成对象并返回。采取了orm思想。
基本步骤:导入依赖jar包 准备好user数据库表 user实体类 写mapper.xml 和sqlmapconfig.xml 然后写个test进行测试…
mysql mysql-connector-java 5.1.32 org.mybatis mybatis 3.5.2 junit junit 4.12 log4j log4j 1.2.17sqlmapconfig.xml
<?xml version="1.0" encoding="UTF-8" ?> 数据环境--> -加载映射文件--> ## mapper.xml <?xml version="1.0" encoding="UTF-8" ?> select * from user测试类
@Test
public void test1() throws IOException {
//mybatis的基本操作:
// 获得核心配置文件 获得session工厂对象
// 获得session回话对象 传参namescape+id执行操作 释放资源
InputStream resourceAsStream = Resources.getResourceAsStream(“sqlMapconfig.xml”);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> userList = sqlSession.selectList("userMapper.findAll");
System.out.println(userList);
sqlSession.close();
}
一级更新数据是要提交事务,才会更新数据到数据库
mybatis 的dao层的实现方式: 代理接口
public class Mybatistest {
public static void main(String[] args) throws IOException {
//测试 用代理接口的方法来执行SQL
InputStream resourceAsStream = Resources.getResourceAsStream(“sqlMapconfig.xml”);
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List userList = userMapper.findAll();
System.out.println(userList);
}
}
sql 语句的动态写法
select * from user id=#{id} and username=#{username} and password=#{password}实现BaseTypeHandler接口 然后在slqMapConfig .xml文件进行配置可以将数据库的类型和java类进行相互转换…(例子:Date->Long->Date)
<typeHandlers>
<typeHandler handler="com.itheima.handler.DateTypeHandler"></typeHandler>
</typeHandlers>
plugins插件标签 例子:分页查询导入jar坐标 写配置PageHelper 测试
差一个核心配置文件的代码
<?xml version="1.0" encoding="UTF-8" ?> -配置--> -定义别名--> --配置类型转换器--> --配置分页插件--> -设置数据库类型--> -数据环境--> -加载映射文件-->一对一
左边:查询出来的结果 右边:封装的实体属性 第四个是个实体对象 <!--> --> association是匹配的意思--> property=是Private User user javaType=是order封装的实体类--> # 一对多 <collection property="orderList" ofType="order">
<id column="oid" property="id"/>
<result column="ordertime" property="ordertime"/>
<result column="total" property="total"/>
</collection>
</resultMap>