浅谈MyBatis
#1、是什么
Mybatis是为了简化JDBC封装用的
2、能干什么
数据库持久层,把数据写入数据库的DAO
3、怎么干
我们举例使用SSM框架来说明Mybatis是如何操作将数据写入到数据库的并操作数据库数据的
=====================================================
1、环境准备
创建一个maven项目SSM
修改pom文件,添加必要的依赖
新增配置文件共两个,主配置文件和数据连接信息配置文件mybatis-config.xml和jdbc.properties
在java文件目录下添加包com.xxx
在包下添加子包,分别有entity、controller、service、mapper、manager
2、创建的项目名称为SSM,环境变量JDK是1.8版本的
修改POM文件,添加的主要依赖有两个一个是mybatis的,另一个是mysql数据库连接用的
org.mybatis
mybatis
3.5.1
mysql
mysql-connector-java
5.1.36
需要测试,所以在在上测试依赖
junit
junit
4.12
test
3、编写dao接口,在mapper包下创建接口类,如:OrderMapper.java ;编写实现方法,增删改查
查询方法:public order findOrder(int id);
编写entity实体类,在entity包下创建实体类Order,对应数据库Order表,编写实体属性构造get/set方法,tostring方法;
4、在resources目录下创建文件夹mapper,mapper创建cn,cn下创建kungfu,kungfu下创建xml文件OrderMapper.xml;xml文件的名称最好是对应的数据库表名称加上mapper,这样可以快速理解xml操作的是哪张数据库表;
5、编写xml文件,添加标签,其中添加属性namespace告诉程序该xml对应的是java目录下哪个接口,namespace的值是java目录下对应接口的相对路径名称com.ssm.mapper.OrderMapper
在mapper中添加查询标签,每个标签中都有相应的标签属性,如查询标签中的 id(对应接口类中具体的方法名称)resultType(返回值类型)、parameterType(参数类型),当SQL 中有参数需要传输时使用#{参数名};具体的Mybatis的xml语法可以参考如下:
<?xml version="1.0" encoding="UTF-8" ?> select count(*) from t_user insert into t_user(name,nickname,age) values(#{name},#{nickname},#{age}) update t_user set name=#{name},nickname=#{nickname},age=#{age} where Id = #{Id} delete from t_user where id = #{Id} delete from t_user where id = #{Id} select * from t_user where id = #{Id} select * from t_user select * from t_user where `name` like concat('%',#{name},'%') select * from t_user where `name` = #{name} and nickname = #{nickname} select * from t_user where `name` = #{name} and nickname = #{nickname} select * from t_user order by ${colname}6、编写好xml后就可以测试了
编写测试类TestOrder
其中可以把获取配置文件信息的方法写成一个工具类,创建数据库连接也可以
7、编写读取配置文件类
我们定义个工具类MybatisUtil.java
1、先new 一个sqlSessionFactoryBuilder(),得到对象builder
2、获取我们的sqlSessionFactory ,要用Builder.上我们的builder()方法,通过流的形式传一个in的参数
InputStream in = Resources.getResourcesAsStream(”mybatis-config.xml“)
3、这是的builder.build(in)得到的返回值对象就是sqlSessionFactory factory
4、得到对象sqlSessionFactory factory对象后,根据流程就需要得到sqlSession
5、factory.openSession()就可以打开sqlSession
6、得到sqlSession后就可以执行SQL语句了
附上一些常用的Mybatis数据库操作语句:
<?xml version="1.0" encoding="UTF-8" ?> select count(*) from t_user insert into t_user(name,nickname,age) values(#{name},#{nickname},#{age}) update t_user set name=#{name},nickname=#{nickname},age=#{age} where Id = #{Id} delete from t_user where id = #{Id} delete from t_user where id = #{Id} select * from t_user where id = #{Id} select * from t_user select * from t_user where `name` like concat('%',#{name},'%') select * from t_user where `name` = #{name} and nickname = #{nickname} select * from t_user where `name` = #{name} and nickname = #{nickname} select * from t_user order by ${colname}