第四简单的4-mybatis,sql传参parameterType为包装类和map类型的测试
来源:互联网 发布:java完全自学第一步 编辑:程序博客网 时间:2024/05/22 23:27
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 Integersex;
private Datebirthday;
private Stringaddress;
private Stringusername;
public DBUser(Integersex, Date birthday, Stringaddress, 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() {
returnusername;
}
public void setUsername(String username) {
this.username =username;
}
public int getId() {
returnid;
}
public void setId(intid) {
this.id =id;
}
public Integer getSex() {
returnsex;
}
public void setSex(Integer sex) {
this.sex =sex;
}
public Date getBirthday() {
returnbirthday;
}
public void setBirthday(Date birthday) {
this.birthday =birthday;
}
public String getAddress() {
returnaddress;
}
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 {
privateDBUseruser;
public DBUser getUser() {
returnuser;
}
public void setUser(DBUser user) {
this.user =user;
}
}
2. 建实体类对应的映射文件DBUserMapper.xml(局部xml文件)
DBUserMapper.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper
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的全类名-->
<mappernamespace="com.xiangshuai.mybatis.mapper.DBUserMapper">
<!-- 传入参数为包装的vo根据vo的user属性中的username进行模糊查询出List<DBUser> -->
<selectid="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 -->
<selectid="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. <?xmlversion="1.0"encoding="UTF-8"?>
5. <!DOCTYPEconfiguration
6. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
7. "http://mybatis.org/dtd/mybatis-3-config.dtd">
8. <configuration>
9.
10. <!-- 加载java的配置文件或者声明属性信息 -->
11. <propertiesresource="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. <environmentsdefault="development">
28. <environmentid="development">
29. <!-- 配置JDBC事务控制,由mybatis进行管理 -->
30. <transactionManagertype="JDBC"></transactionManager>
31. <!-- 配置数据源,采用mybatis连接池 -->
32. <dataSourcetype="POOLED">
33. <propertyname="driver"value="${db.driver}"/>
34. <propertyname="url"value="${db.url}"/>
35. <propertyname="username"value="${db.username}"/>
36. <propertyname="password"value="${db.password}"/>
37. </dataSource>
38. </environment>
39. </environments>
40.
41. <!-- 加载映射文件 -->
42. <mappers>
43. <mapperresource="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);
}
}
- 第四简单的4-mybatis,sql传参parameterType为包装类和map类型的测试
- Mybatis的参数parameterType的类型
- MyBatis的传入参数parameterType类型
- MyBatis的传入参数parameterType类型
- MyBatis输入类型parameterType#{}与${}的区别
- MyBatis的传入参数parameterType类型
- MyBatis的传入参数parameterType类型
- MyBatis的传入参数parameterType类型
- Mybatis输入映射parameterType与输出映射ResultMap是Map类型的解决方案
- mybatis if 动态生成SQL的一个注意点 parameterType="map"
- Mybatis中parameterType和parameterMap的区别
- Mybatis中parameterType和parameterMap的区别
- MyBatis学习笔记(三)——parameterType为基本类型时的使用方法
- mybatis Mapper.xml中parameterType为object类型的处理方式
- mybatis编写POJO包装类型扩展parameterType字段
- mybatis mapper.xml sql parameterType为String
- 包装类和Map接口的使用
- Java的简单类型包装
- postman基础使用教程
- Mongodb副本集基本操作
- 如何使用Erdas拼接谷歌卫星地图
- Spring boot入门博客推荐
- 如何让linux加载当前目录的动态库
- 第四简单的4-mybatis,sql传参parameterType为包装类和map类型的测试
- 排序二叉树
- [教程]如何快速转载他人博客?
- iPhone 开发——CocoaPods使用
- Android 比例缩放viewgroup
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- admob数据爬取
- vim编辑器设置
- JSP 基础详解