Mybatis 的主要开发过程
1、编写SqlMapConfig.xml
-
配置文件例子:
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理--> <transactionManager type="JDBC" /> <!-- 数据库连接池--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="mysql" /> </dataSource> </environment> </environments> <!-- 加载mapper.xml --> <mappers> <mapper resource="sqlmap/User.xml" /> </mappers> </configuration>
2、编写mapper.xml,其中定义了statement。建议命名规则,表名+mapper.xml。
-
在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,所以在mapper.xml以statement为单位管理sql语句。
-
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace命名空间,为了对sql语句进行隔离,方便管理 ,mapper开发dao方式,使用namespace有特殊作用 --> <mapper namespace="test"> <!-- 根据id查询用户信息 --> <!-- id:唯一标识 一个statement。 #{}:表示 一个占位符,如果#{}中传入简单类型的参数,#{}中的名称随意。 parameterType:输入 参数的类型,通过#{}接收parameterType输入 的参数。 resultType:输出结果 类型,不管返回结果是多条还是单条,指定单条记录映射的pojo类型。 --> <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User"> SELECT * FROM USER WHERE id= #{id} </select> <!-- 添加用户 parameterType:输入参数的类型,User对象 包括 username,birthday,sex,address #{}接收pojo数据,可以使用OGNL解析出pojo的属性值 #{username}表示从parameterType中获取pojo的属性值 selectKey标签:用于进行主键返回,定义了获取主键值的sql order:设置selectKey中sql执行的顺序,相对于insert标签中语句来说 keyProperty:将主键值设置到哪个属性 resultType:select LAST_INSERT_ID()的结果类型 --> <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User"> <selectKey keyProperty="id" order="AFTER" resultType="int"> select LAST_INSERT_ID() </selectKey> INSERT INTO USER(username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address}) </insert> </mapper>
-
其中使用的占位符:
1、#{}:如果#{}中传入简单类型的参数,#{}中的名称随意,mybatis自动将接收的参数内容,进行java类型和jdbc类型的转换。程序员不需要考虑参数的类型,比如:如需要传入字符串,mybatis会最终自动拼接,就是参数两边加双引号。
2、${}:表示sql的拼接,将参数的内容不加修饰拼接在sql语句上,比如模糊查询的时候,‘ %小明% ’,如果使用的是#{},结果拼接后的sql结果将会是’ % ’ 小 明 ’ % ';
-
3、编程通过配置文件创建出SqlSessionFactory。
-
String resource="SqlMapCofig.xml"; //加载配置文件到输入流中 InputStream inputStream=Resource.getResourceAsStream(resource); //创建会话工厂 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
4、通过SqlSessionFactory创建出SqlSession
5、通过SqlSession操作数据库。
---->如果是添加,更新,删除等sql操作,则还需要SqlSession.commit()。