目录
如果有主键的话就像上边一样搞就可以返回主键,如果没有主键,需要我们自己设置的话,我们可以自己设置,配置代码如下:
官方推荐的方式接口,只需要提供一个,然后配置文件遵守相应的规则,就可以。
1.MyBatis的介绍
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
MyBatis的是面向SQL的持久层框架,他封装了JDBC访问数据库的过程,我们开发,只需专注于SQL语句本身的拼装,其它复杂的过程全部可以交给MyBatis的去完成。
2. 工程搭建
- 导入依赖的jar包,在课前资源中有
- 配置SqlMapConfig.xml,可参考课前资料
- 配置log4j.properties,可参考课前资料
- 在课前资料复制POJO到工程目录下
- 配置SQL查询的映射文件,可参考课前资料
- 加载映射文件
3.配置文件
名为 SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!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="root" />
</dataSource>
</environment>
</environments>
</configuration>
创建实体类和查询语句的映射文件
<?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 namespace="user">
<!-- id sql语句的唯一标识
parameterType 入参的数据类型
resultType :返回结果的数据类型
#{}是一个占位符
-->
<select id="getUserById" parameterType="int" resultType="com.angus.mybatis.pojo.User">
SELECT
`id`,
`username`,
`birthday`,
`sex`,
`address`
FROM
`user`
WHERE id=#{id}
</select>
</mapper>
4. 关于做级联插入的时候,需要返回一个id
第一种方案
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
第二种方案:
<insert id="insertUser" parameterType="com.angus.mybatis.pojo.User" useGeneratedKeys="true" keyProperty="id">
第二种方案就是第一种的简写,底层调用了 SELECT LAST_INSERT_ID()
如果有主键的话就像上边一样搞就可以返回主键,如果没有主键,需要我们自己设置的话,我们可以自己设置,配置代码如下:
<insert id="insertUserUUID" parameterType="com.angus.mybatis.pojo.User" >
<selectKey keyProperty="uuid2" resultType="string" order="BEFORE">
SELECT UUID()
</selectKey>
insert into `mybatis`.`user` (
`username`,
`birthday`,
`sex`,
`address`,
`uuid2`
)
values
(
#{username},
#{birthday},
#{sex},
#{address},
#{uuid2}
);
</insert>
5.Mybatis的架构体系:
6. Mybatis Dao 开发方式
-
传统的开发方式,创建接口,创建实现类
接口——>实现类
接口:
实现类:
测试类:
-
官方推荐的方式接口,只需要提供一个,然后配置文件遵守相应的规则,就可以。
想要使用动态代理需要满足以下规则;
动态代需要写实理的好处就是不现类,就可以完成相应的业务操作
不需要实现类,可以创建一个动态代理
测试类如下:
一旦和spring整合以后就会变的更加简单。
7.SqlMapConf.xml配置
-
关于properties我们可以这样玩:
将数据库的链接字符串拿出来:
(需要注意的是:如果同时配置了红色框,和红色框下边的内容,根据加载顺序,红色框里边引入的外部文件的数据会自动把内部标签的数据覆盖掉)
一旦这样配置以后,
连接字符串就可以单独拿出来,这样做是方便维护的。
-
别名的配置
配置单个别名
使用包扫描的方式直接不用我么手动的配置,直接扔一个包的全路径进去,就可以了(包扫描的方式是推荐的)
-
关于加载映射文件的配置:
想要使用映射文件的包扫同样需要满足条件。(映射文件的和接口在同一路下,接口与映射文件的名称相同)
包扫描: