parameterType 包装类和普通实体类是一模一样的操作,也可支持级联
map作为入参也一样,只是不是用对象的属性,而是用map的key
步骤:
Jar包导入,生成数据库表,创建与src同级资源目录config,test目录(注意,config,test均为资源目录)
1. 创建实体类和入参包装类:
DBUser.java
package com.xiangshuai.mybatis.pojo;
import java.util.Date;
public classDBUser {
private int id;
private Integer sex;
private Date birthday;
private String address;
private String username;
public DBUser(Integer sex, Date birthday, String address, String username) {
super();
this.sex = sex;
this.birthday = birthday;
this.address = address;
this.username = username;
}
public DBUser() {
super();
// TODO Auto-generated constructor stub
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "DBUser [id="+ id + ", sex="+ sex+ ", birthday=" + birthday+ ", address=" + address+ ", username="
+username + "]";
}
}
VO.java
package com.xiangshuai.mybatis.pojo;
/*
* * 入参类型包装类
* */
public classVO {
privateDBUser user;
public DBUser getUser() {
return user;
}
public void setUser(DBUser user) {
this.user = user;
}
}
2. 建实体类对应的映射文件DBUserMapper.xml(局部xml文件)
DBUserMapper.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">
<!-- namespace:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理时,它具有特殊及重要的作用,在这里 namespace="com.xiangshuai.mybatis.mapper.DBUserMapper"
对应mapper接口DBUserMapper的全类名-->
<mapper namespace="com.xiangshuai.mybatis.mapper.DBUserMapper">
<!-- 传入参数为包装的vo 根据vo的user属性中的username进行模糊查询出List<DBUser> -->
<select id="findDBUserByUsername" parameterType="com.xiangshuai.mybatis.pojo.VO"
resultType="com.xiangshuai.mybatis.pojo.DBUser">
SELECT* FROM DBUSER WHERE username LIKE '%${user.username}%'
</select>
<!-- 传入参数为map 根据map的key id查出List<DBUser> WHERE id=#{id}其中 id为表字段,而#{id}中的id为入参
map的key -->
<select id="findDBUserById"parameterType="hashmap"
resultType="com.xiangshuai.mybatis.pojo.DBUser">
SELECT* FROM DBUSER WHERE id=#{id}
</select>
</mapper>
3. 将DBUserMapper.xml(局部xml文件)mapper到SqlMapConfig.xml(全局配置文件)中
4. <?xml version="1.0"encoding="UTF-8" ?>
5. <!DOCTYPE configuration
6. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
7. "http://mybatis.org/dtd/mybatis-3-config.dtd">
8. <configuration>
9.
10. <!-- 加载java的配置文件或者声明属性信息 -->
11. <properties resource="db.properties">
12. </properties>
13.
14. <!-- <settings></settings>-->
15.
16. <!-- 自定义别名 -->
17. <!-- <typeAliases>
18. 单个别名定义
19. <typeAliastype="com.itheima.mybatis.po.User" alias="user"/>
20.
21. 批量别名定义(推荐)
22. package:指定包名称来为该包下的po类声明别名,默认的别名就是类名(首字母大小写都可)
23. <packagename="com.itheima.mybatis.po" />
24. </typeAliases>
25. -->
26. <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
27. <environments default="development">
28. <environment id="development">
29. <!-- 配置JDBC事务控制,由mybatis进行管理 -->
30. <transactionManager type="JDBC"></transactionManager>
31. <!-- 配置数据源,采用mybatis连接池 -->
32. <dataSource type="POOLED">
33. <property name="driver"value="${db.driver}" />
34. <property name="url"value="${db.url}" />
35. <property name="username"value="${db.username}" />
36. <property name="password"value="${db.password}" />
37. </dataSource>
38. </environment>
39. </environments>
40.
41. <!-- 加载映射文件 -->
42. <mappers>
43. <mapper resource="DBUserMapper.xml" />
44.
45. <!-- 批量加载映射文件 -->
46. <!-- <packagename="com.itheima.mybatis.mapper" /> -->
47. </mappers>
48. </configuration>
4. 严格参照DBUserMapper.xml按照mapper规范创建mapper接口DBUserMapper.java
packagecom.xiangshuai.mybatis.mapper;
import java.util.List;
import java.util.Map;
importcom.xiangshuai.mybatis.pojo.DBUser;
importcom.xiangshuai.mybatis.pojo.VO;
public interface DBUserMapper {
public List<DBUser> findDBUserByUsername(VO vo);
public DBUser findDBUserById(Map<String,Object> map);
}
5.测试类Demo1.java
package com.xiangshuai.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
importcom.xiangshuai.mybatis.mapper.DBUserMapper;
import com.xiangshuai.mybatis.pojo.DBUser;
import com.xiangshuai.mybatis.pojo.VO;
public class Demo1 {
/*mybatis开发方式mapper开发非mapper开始: 查询,操作和hibernate很像,也是先造实体类,然后配实体类的XML映射文件,然后将实体类的XML映射文件mapper到全局映射 XML文件
SqlMapConfig.xml中去,
* */
privateSqlSessionFactory sqlSessionFactory;
@Before
publicvoid before(){
//读取配置文件
//全局配置文件的路径
Stringresource = "SqlMapConfig.xml";
InputStreaminputStream = null;
try{
inputStream= Resources.getResourceAsStream(resource);
}catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
//创建SqlSessionFactory
sqlSessionFactory = newSqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void findDBUserByUsername(){
//创建mapper对象 -- DBUserMapper对象
//创建mapper对象 -- DBUserMapper对象
SqlSessionsqlsession = sqlSessionFactory.openSession();
DBUserMappermapper = sqlsession.getMapper(DBUserMapper.class);
//调用mapper完成 增删改查方法
DBUseruser = new DBUser();user.setUsername("诗");VOvo = new VO();vo.setUser(user);
List<DBUser>users = mapper.findDBUserByUsername(vo);//根据vo.user.username进行模糊查询
sqlsession.close();
System.out.println(users);
}
@Test
publicvoid findDBUserById(){
//创建mapper对象 -- DBUserMapper对象
SqlSessionsqlsession = sqlSessionFactory.openSession();
DBUserMappermapper = sqlsession.getMapper(DBUserMapper.class);
//调用mapper完成 增删改查方法
Map<String,Object>map =new HashMap<String,Object>();
map.put("id",31);map.put("username", "小明");
DBUseruser = mapper.findDBUserById(map);//根据map的key id进行查询
sqlsession.close();
System.out.println(user);
}
}