Mybatis学习笔记(三)

1、指定mapper接口的包名批量加载mapper

规范:保持mapper接口的名称和映射文件的名称相同,且在一个目录中

2、实例

(1)User.java

public class User {

	private Integer id;
	private String name;
	private String password;
	//get和set方法
}

(2)UserCustomer.java

public class UserCustomer extends User {

	//可以扩展用户的信息
}

(3)UserQueryVo.java

public class UserQueryVo {

	private UserCustomer userCustomer;

	public UserCustomer getUserCustomer() {
		return userCustomer;
	}

	public void setUserCustomer(UserCustomer userCustomer) {
		this.userCustomer = userCustomer;
	}
	
	//还可以包装其他的的查询条件,例如订单信息,商品信息等等
}

(4)UserMapper.java

public interface UserMapper {

	public UserCustomer findUserListById(UserQueryVo userQueryVo) throws Exception;
	
	public Integer findUserCountById(UserQueryVo userQueryVo) throws Exception;
}

(5)UserMapper.xml

<mapper namespace="com.mybatis.mapper.UserMapper">
  <!-- 
  	使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才会映射成功
  	不管是输出pojo单个对象,还是一个pojo对象列表(list包括pojo),在mapper.xml中,resultType指定的类型都是一样的,
  	但是在mapper.java中,对应的方法返回值类型不一样,
  	当输出pojo单个对象时,方法返回值是pojo;当输出pojo对象列表,方法返回值是List<pojo>
  -->
  <select id="findUserListById" parameterType="com.mybatis.bean.UserQueryVo" 
  		resultType="com.mybatis.bean.UserCustomer">  
    select id,name name_ from user where id=#{userCustomer.id}
  </select>
  
  <!-- 查询出来的结果集只有一行且一列,可以使用简单类型进行输出映射 -->
  <select id="findUserCountById" parameterType="com.mybatis.bean.UserQueryVo" 
  		resultType="Integer">  
    select count(*) from user where id=#{userCustomer.id}
  </select>
</mapper>

(6)db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hwd
jdbc.username=root
jdbc.password=123456

(7)mybatis-config.xml

<configuration>
	<properties resource="config/db.properties"></properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>
    	<!-- 通过resource加载单个的映射文件-->
        <!-- <mapper resource="com/mybatis/mapper/UserMapper.xml"/> -->
        
        <!-- 
        	通过mapper接口加载单个的映射文件
        	规范:保持mapper接口的名称和映射文件的名称相同,且在一个目录中
        -->
        <!-- <mapper class="com.mybatis.mapper.UserMapper"/> -->
        
        <!-- 
        	指定mapper接口的包名批量加载mapper(推荐使用)
        	规范:保持mapper接口的名称和映射文件的名称相同,且在一个目录中
        -->
        <package name="com.mybatis.mapper"/>
    </mappers>
</configuration>

(8)UserTest.java

public class UserTest {

	private SqlSessionFactory sqlSessionFactory;
	
	@Before
	public void setUp() throws Exception {
		
		String resource = "config/mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}

	@Test
	public void testFindUserById() throws Exception{
		
		SqlSession sqlSession = sqlSessionFactory.openSession();
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		UserQueryVo userQueryVo = new UserQueryVo();
		UserCustomer userCustomer = new UserCustomer();
		userCustomer.setId(1);
		userQueryVo.setUserCustomer(userCustomer);
		UserCustomer uc = userMapper.findUserListById(userQueryVo);
		Integer count = userMapper.findUserCountById(userQueryVo);
		System.out.println(uc.toString());
		System.out.println(count);
		sqlSession.close();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值