Mybatis
1.po类
publicclassUser {
privateintid;
privateString username;
privateString sex;
privateDate birthday;
privateString address;
publicintgetId() {
returnid;
}
publicvoidsetId(intid) {
this.id= id;
}
2.povo类
//beanVo 类相对于数据库中的视图,封装视图对象
publicclassUserVo {
privateUser user;
privateList<Integer> idList;
publicUser getUser() {
returnuser;
}
publicvoidsetUser(User user){
this.user= user;
}
publicList<Integer> getIdList() {
returnidList;
}
publicvoidsetIdList(List<Integer> idList){
this.idList= idList;
}
}
3.mapper,mapper类和mapperxml文件放在统一的包下
publicinterfaceUserMapper {
//1、根据用户ID查询用户信息
publicUser findUserById(intid)throwsException;
//3、添加用户
publicvoidinsertUser(User user)throwsException;
//综合查询
publicList<User> findUserList(UserVo vo);
//综合查询用户总数
publicintfindUserCount(UserVo vo);
//resultMap入门
publicUser findUserRstMap(intid);
}
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="com.formssi.mapper.UserMapper">
<!--根据用户ID查询用户信息-->
<selectid="findUserById"parameterType="int"resultType="User">
SELECT
*FROM USER WHERE id =#{id}
</select>
<!--定义sql片段-->
<!--sql片段内,可以定义sql语句中任何部分-->
<!--sql片段内,最好不用将where和select关键字声明在内-->
<sqlid="whereClause">
<!--if标签:可以对输入的参数进行判断-->
<!--test:指定判断表达式-->
<iftest="user!= null">
<iftest="user.username!= null and user.username != ''">
ANDusername LIKE '%${user.username}%'
</if>
<iftest="user.sex!= null and user.sex != ''">
ANDsex = #{user.sex}
</if>
</if>
<iftest="idList!= null">
<!--AND id IN (#{id},#{id},#{id}) -->
<!--collection:表示pojo中集合属性的属性名称-->
<!--item:为遍历出的结果声明一个变量名称-->
<!--open:遍历开始时,需要拼接的字符串-->
<!--close:遍历结束时,需要拼接的字符串-->
<!--separator:遍历中间需要拼接的连接符-->
ANDid IN
<foreachcollection="idList"item="id"open="("close=")"
separator=",">
#{id}
</foreach>
</if>
</sql>
<!--综合查询,查询用户列表-->
<selectid="findUserList"parameterType="UserVo"
resultType="user">
SELECT* FROM user
<!--where标签:默认去掉后面第一个AND,如果没有参数,则把自己干掉-->
<where>
<!--引入sql片段-->
<includerefid="whereClause"/>
</where>
</select>
<!--综合查询用户总数-->
<selectid="findUserCount"parameterType="com.formssi.po.UserVo"
resultType="int">
SELECTcount(*) FROM user
<!--where标签:默认去掉后面第一个AND,如果没有参数,则把自己干掉-->
<where>
<!--引入sql片段-->
<includerefid="whereClause"/>
</where>
</select>
<!--resultMap入门-->
<!--id标签:专门为查询结果中唯一列映射-->
<!--result标签:映射查询结果中的普通列-->
<resultMaptype="user"id="UserRstMap">
<idcolumn="id_"property="id"/>
<resultcolumn="username_"property="username"/>
<resultcolumn="sex_"property="sex"/>
</resultMap>
<selectid="findUserRstMap"parameterType="int"resultMap="UserRstMap">
Selectid id_,username username_,sex sex_ from user where id =#{id}
</select>
</mapper>
4.连接数据库配置文件
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/pdmybatis?useUnicode=true&characterEncoding=utf8
db.username=root
db.password=wanwan
5.全局配置文件SqlMapConfig.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfiguration
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--加载java的配置文件或者声明属性信息-->
<propertiesresource="config/db.properties">
<!--<property name="db.username" value="123" />-->
</properties>
<!--自定义别名-->
<typeAliases>
<!--单个别名定义-->
<!--<typeAlias type="com.itheima.mybatis.po.User"alias="user"/> -->
<!--批量别名定义(推荐)-->
<!--package:指定包名称来为该包下的po类声明别名,默认的别名就是类名(首字母大小写都可)-->
<packagename="com.formssi.po"/>
</typeAliases>
<!--配置mybatis的环境信息,与spring整合,该信息由spring来管理-->
<environmentsdefault="development">
<environmentid="development">
<!--配置JDBC事务控制,由mybatis进行管理-->
<transactionManagertype="JDBC"></transactionManager>
<!--配置数据源,采用mybatis连接池-->
<dataSourcetype="POOLED">
<propertyname="driver"value="${db.driver}"/>
<propertyname="url"value="${db.url}"/>
<propertyname="username"value="${db.username}"/>
<propertyname="password"value="${db.password}"/>
</dataSource>
</environment>
</environments>
<!--加载映射文件-->
<mappers>
<!--批量加载映射文件-->
<packagename="com.formssi.mapper"/>
</mappers>
</configuration>
6.测试
publicclassTest {
privateSqlSessionFactory sqlSessionFactory;
@Before
publicvoidsetUp() throwsException {
//读取配置文件
//全局配置文件的路径
Stringresource= "config/SqlMapConfig.xml";
InputStreaminputStream= Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
sqlSessionFactory= newSqlSessionFactoryBuilder().build(inputStream);
}
@After
publicvoidtearDown() throwsException {
}
@org.junit.Test
publicvoidtest() throwsException {
//1.加载全局配置
//2.创建sqlSessionFactory
//3.打开SQLsession
//创建UserMapper对象
SqlSessionsqlSession= sqlSessionFactory.openSession();
//由mybatis通过sqlsession来创建代理对象
UserMappermapper =sqlSession.getMapper(UserMapper.class);
Useruser =mapper.findUserById(1);
System.out.println(user);
sqlSession.close();
}
@org.junit.Test
publicvoidtestFindUserList() throwsException {
//创建UserMapper对象
SqlSessionsqlSession= sqlSessionFactory.openSession();
//由mybatis通过sqlsession来创建代理对象
UserMappermapper =sqlSession.getMapper(UserMapper.class);
UserVovo = newUserVo();
//User user= new User();
//user.setUsername("东哥");
//user.setSex("1");
//vo.setUser(user);
List<Integer>idList =newArrayList<>();
idList.add(1);
idList.add(2);
idList.add(10);
vo.setIdList(idList);
List<User>list =mapper.findUserList(vo);
intcount =mapper.findUserCount(vo);
System.out.println(list);
System.out.println(count);
sqlSession.close();
}
@org.junit.Test
publicvoidtestFindUserRstMap() throwsException {
//创建UserMapper对象
SqlSessionsqlSession= sqlSessionFactory.openSession();
//由mybatis通过sqlsession来创建代理对象
UserMappermapper =sqlSession.getMapper(UserMapper.class);
Useruser =mapper.findUserRstMap(1);
System.out.println(user);
sqlSession.close();
}
}