mybatis(二)--相关属性及相关细节

mapper接口动态代理

动态代理dao开发规则

1.namespace必需是接口的全路径名

2.接口的方法名 必需与 映射文件的sql id一致

3.接口的输入参数必需与映射文件的parameterType类型一致

4.接口的返回类型必须与映射文件的resultType类型一致

动态代理dao开发步骤

1.创建xxxMapper.xml映射文件 编写SQL

2.创建UserMapper接口

3.加载UserMapper.xml

4.测试动态代理Dao

dao层代码

List<User> findUserByIds(QueryVo queryVo);

mapper映射xml

<select id="findUserByIds" parameterType="queryvo" resultType="user">
select * from `user`
<where>
<!-- and id in (1,2,3,4,5)
and id in (?,?,?,?,?) --> <!--foreach循环标签
collection : 要遍历的集合
item: 设置的循环变量
open: 循环开始之前输出的内容
close: 循环结束之后输出的内容
separator: 分隔符
-->
<foreach collection="ids" item="id" open="and id in(" close=")" separator=",">
#{id}
</foreach>
</where>

Dao测试代码

Test
public void testGetUserById() {
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
// user.setId(10);
user.setUsername("张");
// List<User> orderList = userMapper.findUserList(user);
QueryVo queryVo = new QueryVo();
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(10);
list.add(26);
list.add(30);
queryVo.setIds(list);
List<User> userByIds = userMapper.findUserByIds(queryVo);
for (User user2 : userByIds) {
System.out.println(user2);
} sqlSession.close();
}

properties(属性)

属性核心文件配置

<properties resource="jdbc.properties">

<property name="jdbc.username" value="root"/>

<property name="jdbc.password" value="123456"/>

</properties>

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis

jdbc.username=root

jdbc.password=123456

typeAliases(类型别名)

mybatis(二)--相关属性及相关细节mybatis(二)--相关属性及相关细节

自定义别名

在SqlMapConfig.xml配置文件添加如下配置信息

1、单个别名配置

<!-- 配置pojo的别名 -->

<typeAliases>

<typeAlias type="cn.tz.pojo.User" alias="user"/>

</typeAliases>

2、包扫描别名配置

<!-- 配置pojo的别名 -->

<typeAliases>
<package name="cn.tz.pojo.User"/>
</typeAliases>

注意:resultType属性的值就是User类的别名,且别名是不区分大小写的。

SqlMapConfig.xml文件加载mapper.xml文件

Mapper(映射器)配置的几种方法:

1、<mapper resource=" " /> 使用相对于类路径的资源,如

<mapper resource="mybatis/user.xml"/>

2、<mapper class=" " /> 使用mapper接口类路径,如:

<mapper class="cn.xxx.UserMapper"/>

3、<package name=""/> 注册指定包下的所有mapper接口,如:

<package name="cn.tz.pojo.UserMapper"/>

注意:第二种和第三种的方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

虽然Mapper(映射器)配置有以上三种方法,但是实际开发中就用第三种方法

传递包装的pojo

pojo类中包含pojo类 -需求:根据用户id查询用户信息,查询条件放到QueryVo类的user属性中

步骤: 1、新建一个QueryVo类

public class QueryVo {
private User user;
private List<Integer> ids;
缺少get/set方法
}

2、映射文件中编写sql语句与配置

    <!-- 加载配置文件 -->
<mappers>
<!-- <mapper resource="mybatis/user.xml"/> -->
<!-- <mapper resource="cn/xxx/mapper/UserMapper.xml"/> --> <!-- <mapper class="cn.tz.dao.UserMapper"/> --> <package name="cn.xxx.dao"/>
</mappers>

3、在对应接口中添加方法

@Select("select * from `order`")
List<Order> selAll();

4、编写单元测试

SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
List<Order> selAll = orderMapper.selAll();
for (Order order : selAll) {
System.out.println(order);
}
上一篇:PHP单例模式编写


下一篇:vue.js之个人总结