1.作用:实现对数据库进行操作,MyBatis是对JDBC技术的封装,
1)封装了获取连接,生成Statement,执行SQL过程
2)封装了SQL参数设置过程 将参数设置到#{XX}
3)封装了将结果集映射成实体对象的过程 resultType指定,名称对应
2.MyBatis使用
1)导入mybatis包,数据库驱动包
2)添加SqlMapConfig.xml主配置文件
*定义数据库连接参数
*加载SQL定义文件 <mappers><mapper resource="SQL定义文件路径" /></mappers>
3)根据表写实体类(属性名与字段一致,属性类型与表一致,实现序列化)
*解决实体类和SQL定义文件属性名不一致的情况:使用别名或者自定义resultMap属性
<select id="findAll" resultMap="costMap"> //resultMap与resultType属性不能共存
SELECT * FROM cost
<select>
<resultMap id="costMap" type="包名.类名">
<id property="id" colum="cost_id"/>
<result property="name" colum="name"/>
</resultMap>
4)编写SQL,调用SQL, SQL定义XML文件(<select>,<update>,<insert>,<delete>)
eg:<select id="findById" parameterType="int" resultType="com.tedu.entity.User" >
SELECT * FROM lh_user WHERE id=#{id}
</select>
*id:SQL语句的名字,有唯一性,通过该名调用这个SQL语句
*parameterType:SQL语句中需要传入的参数类型
*resultType:指定查询出的结果集映射(封装)的类型
5)使用者加载SqlMapConfig.xml,利用SqlSession执行SQL
*获取SqlSession的三步曲SqlSessionFactoryBuilder-->SqlSessionFactory-->SqlSession
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
String conf="SqlMapConfig.xml";
Reader reader=Resources.getResourceAsReader(conf); //加载主配置文件(SqlMapConfig.xml),转化为流参数
SqlSessionFactory factory=builder.build(reader);//加载配置信息获取SqlSession工厂
SqlSession session=factory.openSession(); //由工厂创建Session对象
*SqlSession执行SQL
session.selectOne/session.selectList/session.insert/session.delete/session.update
3.Mapper映射器(接口)
1)MyBatis提供了一个Mapper映射器接口规则,按规则写出的接口,MyBatis框架可自动生成实现组件对象
2)规则:
*方法名与SQL定义的id属性保持一致
*方法的参数类型与SQL定义的parameterType属性保持一致
*方法返回类型 增删改---可以使void或int(受影响的记录行数)
查询---单行结果类型为resultType的类型,多行结果类型为List<resultType>
*SQL定义文件中<mapper>元素的namespace属性指定为"包名.接口名"
3)使用:sqlSession.getMapper(接口.clas);
1)封装了获取连接,生成Statement,执行SQL过程
2)封装了SQL参数设置过程 将参数设置到#{XX}
3)封装了将结果集映射成实体对象的过程 resultType指定,名称对应
2.MyBatis使用
1)导入mybatis包,数据库驱动包
2)添加SqlMapConfig.xml主配置文件
*定义数据库连接参数
*加载SQL定义文件 <mappers><mapper resource="SQL定义文件路径" /></mappers>
3)根据表写实体类(属性名与字段一致,属性类型与表一致,实现序列化)
*解决实体类和SQL定义文件属性名不一致的情况:使用别名或者自定义resultMap属性
<select id="findAll" resultMap="costMap"> //resultMap与resultType属性不能共存
SELECT * FROM cost
<select>
<resultMap id="costMap" type="包名.类名">
<id property="id" colum="cost_id"/>
<result property="name" colum="name"/>
</resultMap>
4)编写SQL,调用SQL, SQL定义XML文件(<select>,<update>,<insert>,<delete>)
eg:<select id="findById" parameterType="int" resultType="com.tedu.entity.User" >
SELECT * FROM lh_user WHERE id=#{id}
</select>
*id:SQL语句的名字,有唯一性,通过该名调用这个SQL语句
*parameterType:SQL语句中需要传入的参数类型
*resultType:指定查询出的结果集映射(封装)的类型
5)使用者加载SqlMapConfig.xml,利用SqlSession执行SQL
*获取SqlSession的三步曲SqlSessionFactoryBuilder-->SqlSessionFactory-->SqlSession
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
String conf="SqlMapConfig.xml";
Reader reader=Resources.getResourceAsReader(conf); //加载主配置文件(SqlMapConfig.xml),转化为流参数
SqlSessionFactory factory=builder.build(reader);//加载配置信息获取SqlSession工厂
SqlSession session=factory.openSession(); //由工厂创建Session对象
*SqlSession执行SQL
session.selectOne/session.selectList/session.insert/session.delete/session.update
3.Mapper映射器(接口)
1)MyBatis提供了一个Mapper映射器接口规则,按规则写出的接口,MyBatis框架可自动生成实现组件对象
2)规则:
*方法名与SQL定义的id属性保持一致
*方法的参数类型与SQL定义的parameterType属性保持一致
*方法返回类型 增删改---可以使void或int(受影响的记录行数)
查询---单行结果类型为resultType的类型,多行结果类型为List<resultType>
*SQL定义文件中<mapper>元素的namespace属性指定为"包名.接口名"
3)使用:sqlSession.getMapper(接口.clas);