1.导入jar包
2.配置文件
SQLMapConfig.xml
<?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>
<!-- 和spring整合后 environments配置将废除-->
<!-- <environments default="development">
<environment id="development">
使用jdbc事务管理
<transactionManager type="JDBC" />
数据库连接池
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> -->
<properties resource="db.properties"/>
<!-- 自定义别名
<typeAliases>
<typeAlias type="com.huida.pojo.User" alias="user"/>
包扫描的方式是批量定义别名,定以后别名等于类名,不区分大小写
<package name="com.huida.pojo"/>
</typeAliases> -->
<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>
<mapper resource="User.xml"/>
<mapper resource="com/huida/mapper/UserMapper.xml"/>
<!-- 接口名称和映射文件名称相同且在同一个目录
<mapper class="com.huida.mapper.UserMapper"/>
<package name="com.huida.mapper"/>
-->
</mappers>
</configuration>
3.pojo类在这里就省略了
4.创建mapper包结构
UserMapper.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">
<!-- mapper代理借口编写规则
1.映射文件中namespace等于接口全路径
2.映射文件中sql语句id等于接口方法名称
3.映射文件中传入参数类型等于接口方法的传入参数类型
4.返回结果集一样
-->
<mapper namespace="com.huida.mapper.UserMapper">
<select id="queryUserById" parameterType="java.lang.Integer" resultType="com.huida.pojo.User">
SELECT * FROM USER WHERE id=#{id}
</select>
<!-- 使用包装类型查询用户
使用ognl从对象中取属性值,如果是包装对象,可以使用 user.username
-->
<select id="findUserByQueryVo" parameterType="com.huida.pojo.QueryVo" resultType="com.huida.pojo.User">
SELECT * FROM USER WHERE username LIKE '%${user.username}%'
</select>
<!-- 获取用户列表总数 -->
<select id="findUserCount" resultType="int">
select count(*) from user
</select>
<!-- 动态sql,查询条件拼接 -->
<select id="findUserByUsernameAndSex" parameterType="com.huida.pojo.User" resultType="com.huida.pojo.User">
select * from user
<include refid="queryUser_username_sex"></include>
</select>
<sql id="queryUser_username_sex">
<!-- where标签可以自动的处理第一个and -->
<where>
<if test="username!=null and username!=''">
and username like #{username}
</if>
<if test="sex!=null and sex!=''">
and sex=#{sex}
</if>
</where>
</sql>
<select id="findUserByIds" parameterType="com.huida.pojo.QueryVo" resultType="com.huida.pojo.User">
select * from user
<where>
<if test="ids!=null and ids.size>0">
<foreach collection="ids" item="id" open="and id in (" close=")" separator=",">
#{id}
</foreach>
</if>
</where>
</select>
<!-- 查询订单 -->
<select id="findOrderAndUser1" resultType="com.huida.pojo.OrderCustom">
SELECT a.*,b.id uid,username,birthday,sex,address
FROM orders a,USER b
WHERE a.user_id=b.id
</select>
<!-- 手动映射 -->
<select id="findOrderAndUser2" resultMap="OrdersAndUserResultMap">
SELECT a.*,b.id uid,username,birthday,sex,address
FROM orders a,USER b
WHERE a.user_id=b.id
</select>
<resultMap type="com.huida.pojo.Orders" id="OrdersAndUserResultMap">
<!--
主键
column:数据库中字段名称
property:Java中pojo对应的字段名 -->
<id column="id" property="id"/>
<!-- 非主键 -->
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
<!-- 指定单个对象对应关系 -->
<association property="user" javaType="com.huida.pojo.User">
<id column="uid" property="id"/>
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="birthday" property="birthday"/>
<result column="address" property="address"/>
</association>
</resultMap>
<!-- 一对多 -->
<select id="findUserAndOrders" resultMap="UserAndOrdersResultMap">
SELECT a.*,b.id oid,user_id,number,createtime,note
FROM USER a,orders b
WHERE a.id=b.user_id
</select>
<resultMap type="com.huida.pojo.User" id="UserAndOrdersResultMap">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="birthday" property="birthday"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
<collection property="ordersList" ofType="com.huida.pojo.Orders">
<id column="oid" property="id"/>
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
</collection>
</resultMap>
</mapper>
UserMapper.java
package com.huida.mapper;
import java.util.List;
import com.huida.pojo.OrderCustom;
import com.huida.pojo.Orders;
import com.huida.pojo.QueryVo;
import com.huida.pojo.User;
public interface UserMapper {
User queryUserById(Integer id);
List<User> findUserByQueryVo(QueryVo vo);
int findUserCount();
List<User> findUserByUsernameAndSex(User user);
List<User> findUserByIds(QueryVo vo);
List<OrderCustom> findOrderAndUser1();
List<Orders> findOrderAndUser2();
List<User> findUserAndOrders();
}
5.编写测试类
UserMapperTest.java
package com.huida.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.huida.mapper.UserMapper;
import com.huida.pojo.OrderCustom;
import com.huida.pojo.Orders;
import com.huida.pojo.QueryVo;
import com.huida.pojo.User;
public class UserMapperTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void init() throws IOException{
//创建sqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//加载sqlMapConfig.xml
InputStream inputStream=Resources.getResourceAsStream("SqlMapConfig.xml");
//创建sqlSessionFactory
this.sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
}
@Test
public void run(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
User user=mapper.queryUserById(1);
System.out.println(user);
}
@Test
public void testfindUserByQueryVo(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
QueryVo vo=new QueryVo();
User user=new User();
user.setUsername("张");
vo.setUser(user);
List<User> list=mapper.findUserByQueryVo(vo);
for(User user2:list){
System.out.println(user2);
}
}
@Test
public void testfindUserCount(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
int count=mapper.findUserCount();
System.out.println(count);
openSession.close();
}
@Test
public void testfindUserByUsernameAndSex(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
User user=new User();
user.setUsername("%张%");
user.setSex("1");
List<User> list=mapper.findUserByUsernameAndSex(user);
for(User user3:list){
System.out.println(user3);
}
}
@Test
public void testfindUserByIds(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
QueryVo vo=new QueryVo();
List<Integer> ids=new ArrayList<Integer>();
ids.add(1);
ids.add(10);
ids.add(16);
vo.setIds(ids);
List<User> list=mapper.findUserByIds(vo);
for(User user:list){
System.out.println(user);
}
openSession.close();
}
@Test
public void testfindOrderAndUser1(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
List<OrderCustom> list=mapper.findOrderAndUser1();
for(OrderCustom orderCustom:list){
System.out.println(orderCustom);
}
}
@Test
public void testfindOrderAndUser2(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
List<Orders> list=mapper.findOrderAndUser2();
for(Orders orders:list){
System.out.println(orders);
}
}
@Test
public void testfindUserAndOrders(){
SqlSession openSession = sqlSessionFactory.openSession();
UserMapper mapper = openSession.getMapper(UserMapper.class);
List<User> list=mapper.findUserAndOrders();
for(User user:list){
System.out.println(user);
}
}
}