主配置文件配置层次结构
Properties
- 在configuration中配置Properties
<?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="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</properties>
<!--配置MyBatis环境配置-->
<environments default="development">
<environment id="development">
<!--配合JDBC进行事务控制,由Mybatis控制-->
<transactionManager type="JDBC"></transactionManager>
<!--连接池-->
<dataSource type="POOLED">
<!--driver是mysql的驱动-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/bamzhy/bean/user.xml"></mapper>
</mappers>
</configuration>
- 复用之前的properties文件
<properties resource="dbcpconfig.properties">
</properties>
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=12345
Aliases代指bean xml文件中的类型名(parameterType、resultType)
<!--type里边要写全类名-->
<typeAliases>
<typeAlias type="com.bamzhy.bean.User" alias="user"></typeAlias>
</typeAliases>
<!--int这类参数,在Alias里边用_int替代-->
<select id="findUserById" parameterType="int" resultType="user">
可以使用Mybatis提供的别名来给到parameterType、resultType
Mapper映射推荐配置
- 使用mapper接口的全限定名
<mappers>
<mapper class="com.bamzhy.dao.UserDao"></mapper>
</mappers>
注意点:此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下
- 批量配置映射:此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下(直接扫描一个包里边的mapper)
<mappers>
<package name ="com.bamzhy.dao"/>
</mappers>
Mapper映射文件配置
输入映射
简单输入类型:int、string等,只需要在parameterType这里填好就行
Bean(简单的POJO类型)
输入参数是一个POJO
要求# { } 花括号里边的值(占位符里的单词)和POJO里的对象对应,同时POJO里的对象有getter&setter方法
如果占位符里边的单词和POJO里的成员一致也可以。
POJO里有别的类的引用
有一个包含了User对象的类VO
public class VO {
User user;
public User getUser() {
return user;
}
...
}
我们需要根据user里边的username来确定查找对象
<!--这是从配置文件里边-->
<select id="queryByMultiConditions" parameterType="haha" resultType="user">
SELECT * FROM tt_user where username like #{user.username};
</select>
<!--这是主配置文件里边-->
<typeAliases>
<typeAlias type="com.bamzhy.bean.VO" alias="haha"></typeAlias>
<typeAlias type="com.bamzhy.bean.User" alias="user"/>
</typeAliases>
测试:
@Test
public void test6() throws IOException {
VO vo = new VO();
User user = new User();
user.setUsername("haha1");
vo.setUser(user);
List<User> users = dao.queryByMultiConditions(vo);
System.out.println("i=" + users);
}
}
以Map作为输入参数的对象
先设置好parameterType和resultType,选择好key的名称(这里是name和pass)
<!--这是从配置文件里边-->
<select id="findUserByUsernameAndPassword" parameterType="hashmap" resultType="user">
SELECT * FROM tt_user where username = #{name} and password = #{pass};
</select>
new一个hashmap,按照key的名称塞进去值,然后让hashmap作为参数被调用,执行SQL语句
@Test
public void test7() throws IOException {
HashMap<String,String> parameter= new HashMap<>();
parameter.put("name","haha1");
parameter.put("pass","12345");
User userByUsernameAndPassword = dao.findUserByUsernameAndPassword(parameter);
System.out.println(userByUsernameAndPassword);
}