一.概念
MyBatis是一款优秀的持久层框架,他支持定制化SQL,存储过程以及高级映射。MyBatis可以使用简单的XML或注解来配置和映射原生类型,接口和java的POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
二.配置与简单调用语法
在自己项目中你需要加入建立一个属于自己配置文件的文件夹(config)来专门存放这些配置文件,方便在以后需要的时候调用。如下图
在config目录下所需要的SqlMap文件夹中存放的便是你对SQL语句的处理与存放,其余三个文件直接放置即可,其中SqlMapConfig.xml中需要放入数据库的配置信息,加载映射文件(Mapper),延迟加载配置,缓存的开启。
二.两种方式调用Mapper映射文件,并最简实现sql方式
(一)原始方式:进行实现类中方法的调用来实现Mapper映射文件中sql语句的实现,如下图:
<mapper namespace="test">
<!-- 在 映射文件中配置很多sql语句 -->
<!-- 需求:通过id查询用户表的记录 -->
<!-- 通过 select执行数据库查询
id:标识 映射文件中的 sql
将sql语句封装到mappedStatement对象中,所以将id称为statement的id
parameterType:指定输入 参数的类型,这里指定int型
#{}表示一个占位符号
#{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
-->
<select id="findUserById" parameterType="int" resultType="ssm.po.User">
SELECT * FROM sport WHERE id=#{id}
</select>
</mapper>
public User findUserById(int id) throws Exception {
//继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSessoin
SqlSession sqlSession = this.getSqlSession();
User user = sqlSession.selectOne("test.findUserById", id);
return user;
}
(二)接口方式:进行mapper文件的方式对sql方法的调用与查询,但这种方式需要保证Mapper文件中的id与接口所创建的方法名保持一致,如下图:
public interface UserMapper {
//根据id查询用户信息
public User findUserById(int id) throws Exception;
}
<mapper namespace="ssm.mapper.UserMapper">
<select id="findUserById" parameterType="int" resultType="user">
SELECT * FROM sport WHERE id=#{value}
</select>
</mapper>
以上两种方式可以对方法中有关sql语句的东西进行执行。
三.映射方式的分类
分类方式主要有一对一映射,一对多映射,多对多映射
在配置方面上:
<select id="findUserById" parameterType="int" resultType="ssm.po.User">
SELECT * FROM sport WHERE id=#{id}
</select>
其中resultType主要啊针对单表一对一查询,reusultMap主要针对多表或级联查询,但两种方式所填入的都是映射目标的全限定名,区别在于里面的属性所映射的事物有所不同
四.orm逆向工程
逆向工程的出现大大增加了人工编写代码的效率,减少了不必要浪费的时间,在你所设计的数据库的基础上直接运行逆向工程的程序便可得出模板程序,直接应用在自己的项目中即可