一、Mybatis框架的CRUD操作
1. 创建项目 配置依赖(pom.xml)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mybatis01</artifactId>
<groupId>com.zz</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2. 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>
<environments default="mysql">
<environment id="mysql">
<!--事务管理器-->
<transactionManager type="jdbc"></transactionManager>
<!--连接池配置-->
<dataSource type="pooled">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///mybatis?characterEncoding=utf8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!--加载映射文件-->
<!--默认只会加载类路径下的资源文件-->
<mappers>
<mapper resource="com/zz/dao/UserDao.xml"></mapper>
</mappers>
</configuration>
3. 实体类
public class User{}
4. dao接口
public interface UserDao {
void save(User user);
void update(User user);
void delete(int id);
User findOne(int id);
List<User> findByname(String username);
}
5. 接口映射.xml文件
<?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">
<mapper namespace="com.zz.dao.UserDao">
<!--添加方法-->
<!--parameterType 对应方法形参类型-->
<!--#{} 表示占位符,相当于jdbc中的?-->
<!--#{username} 中的username对应User对象的属性,作为占位符参数值-->
<insert id="save" parameterType="com.zz.entity.User">
insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
</insert>
<update id="update" parameterType="com.zz.entity.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id=#{id}
</update>
<!--删除-->
<!--注意:当方法参数只有一个且不是对象类型,#{id}中的id可以随意定义-->
<delete id="delete" parameterType="int">
delete from user where id=#{id}
</delete>
<!--主键查询-->
<!--parameterType 输入参数,对应方法形参-->
<!--resultType 输出参数,对应方法返回值类型-->
<select id="findOne" parameterType="int" resultType="com.zz.entity.User">
select * from user where id=#{id}
</select>
<!--模糊查询-->
<select id="findByname" parameterType="java.lang.String" resultType="com.zz.entity.User">
select * from user where username like #{username}
</select>
</mapper>
二、Mybatis输入/输出参数
1. 输入与输出参数
<!--parameterType 输入参数,对应方法形参-->
<!--resultType 输出参数,对应方法返回值类型-->
<select id="findOne" parameterType="int" resultType="com.zz.entity.User">
select * from user where id=#{id}
</select>
-
输入参数:
parameterType
,对应方法的形参 -
输出参数:
resultType
,对应方法的返回值类型
2. parameterType
-
java简单类型作为输入参数
-
pojo类型作为输入参数
POJO(Plain Ordinary Java Object)
简单的Java对象,实际就是普通JavaBean
-
pojo包装类型作为输入参数
pojo包装类型:一个对象里面又包含了另外一个对象
3. resultType
-
java简单类型作为输出参数
-
pojo类型作为输出参数
resultType
指定方法返回对象(pojo类型)
4. resultMap
通过resultType作为输出参数时,可以把查询的结果自动封装为对象,但是要求数据库中的列名称要与对象的属性一致,否则不能正确封装数据。此时可以使用resultMap
,设置列与属性的映射关系,从而解决列与属性不一致时不能正确封装数据的问题。
三、SqlMapperConfig.xml 配置文件详解
配置标签名称 | 说明 | 作用 |
---|---|---|
properties | 属性 | 加载外部的配置文件 |
settings | 配置全局参数 | |
typeAliases | 类型别名 | 配置别名,给类指定别名 |
typeHandlers | 类型处理器 | |
objectFactory | 对象工厂 | |
plugins | 插件 | |
environments | 环境集合属性对象 | |
databaseIdProvider | 多数据库支持 | |
mappers | 映射器 | 配置加载接口的映射文件或接口类 |
注意:在sqlMapConfig.xml中必须是从上往下的配置顺序