目录
二、MyBatis参数详解
1. parameterType
2. resultType
三、SqlMapConfig.xml配置文件
1. 定义properties标签的方式管理数据库的信息
把数据库的信息定义property标签中的方式
在项目中定义jdbc.properties属性文件,存储数据库相关的信息,统一管理
(1)jdbc.properties属性文件
(2)SqlMapConfig.xml的配置文件
2. 类型别名定义
二、MyBatis参数详解
1. parameterType
-
简单数据类型
int double类型 String类型 long
简单的写法:java.lang.Integer --> int integer Int Integer 都可以,框架提供简写的方式。
-
POJO(JavaBean实体类)对象类型,默认是不能简写,可以配置。
User对象
-
POJO包装对象类型
包含更多的实体类
public class QueryVo implements Serializable {// 自己属性private String name;// user属性private User user;// role属性private Role role;
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public User getUser() {return user;}
public void setUser(User user) {this.user = user;}
public Role getRole() {return role;}
public void setRole(Role role) {this.role = role;}
}
// 测试包装类查询
public List<User> findByVo(QueryVo vo);
<!--包装类测试查询-->
<select id="findByVo" parameterType="com.qcbyjy.domain.QueryVo" resultType="com.qcbyjy.domain.User">select * from user where username = #{user.username}
</select>
2. resultType
-
返回简单数据类型
int double long String
-
返回POJO数据类型
返回User对象类型
-
resultMap结果类型
resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。 如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。 resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。
<!--演示resultMap配置-->
<select id="findUsers" resultMap="userMap">select id _id,username _username,birthday _birthday,sex _sex,address _address from user
</select>
<!--配置resultMap,用来进行数据封装id="唯一的名称,用来被引用的"type="进行封装数据的类型"-->
<resultMap id="userMap" type="com.qcbyjy.domain.User"><!--property="JavaBean中的属性"column="表中的字段"--><result property="id" column="_id"/><result property="username" column="_username" /><result property="birthday" column="_birthday" /><result property="sex" column="_sex" /><result property="address" column="_address" />
</resultMap>
三、SqlMapConfig.xml配置文件
1. 定义properties标签的方式管理数据库的信息
把数据库的信息定义property标签中的方式
<?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><properties><property name="jdbc.driver" value="com.mysql.jdbc.Driver"/><property name="jdbc.url" value="jdbc:mysql:///mybatis_db"/><property name="jdbc.username" value="root"/><property name="jdbc.password" value="root"/></properties><!-- 配置环境们 --><environments default="mysql"><!-- 配置具体的环境 --><environment id="mysql"><!-- 配置事务管理类型 --><transactionManager type="JDBC"/><!-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!-- 加载映射的配置文件 --><mappers><mapper resource="mappers/UserMapper.xml"/></mappers>
</configuration>
在项目中定义jdbc.properties属性文件,存储数据库相关的信息,统一管理
(1)jdbc.properties属性文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis_db
jdbc.username=root
jdbc.password=root
(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><!-- <properties resource="jdbc.properties"></properties>读取外部的配置文件resource="文件的相对路径写法"。例如:jdbc.properties 或者 cn/tx/xxx/jdbc.properties--><properties resource="jdbc.properties"></properties><!-- 配置环境们 --><environments default="mysql"><!-- 配置具体的环境 --><environment id="mysql"><!-- 配置事务管理类型 --><transactionManager type="JDBC"/><!-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!-- 加载映射的配置文件 --><mappers><mapper resource="mappers/UserMapper.xml"/></mappers>
</configuration>
2. 类型别名定义
<!-- 定义别名 -->
<typeAliases><!-- 把com.qcbyjy.domain.User使用user别名来显示,别名user User USER都可以,默认是忽略大写的 <typeAlias type="com.qcbyjy.domain.User" alias="user"/>--><!-- 针对com.qcbyjy.domain包下的所有的类,都可以使用当前的类名做为别名 --><package name="com.qcbyjy.domain"/>
</typeAliases>
<!-- resultType="com.qcbyjy.domain.User" 原来是全路径resultType="user" 现在使用的是别名的方式-->
<select id="findAll" resultType="user">select * from user
</select>