主配置文件配置層次結構
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);
}