您的位置:首页 > 其它

Mybatis框架基础学习(二)

2015-10-08 23:34 387 查看
示例工程:

1. 配置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整合后,environment配置将删除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,由mybatis管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池,由mybatis管理 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/sakila?characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</dataSource>
</environment>
</environments>
</configuration>


2. 配置映射文件

1)命名:xxxMapper.xml(例如: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">
<!-- namespace 命名空间,作用是对sql进行分类管理,进行sql隔离 -->
<!-- 注意:使用Mapper代理方法开发,namespace有特殊重要的作用 -->
<mapper namespace="test">
<!-- 在映射文件中配置很多sql语句 -->
<!-- 通过select进行数据库查询
id: 标识映射文件中sql, 将sql语句封装到mappedStatement对象中,所以成为statement的id
parameterType:指定输入参数的类型
#{actor_id}:占位符,其中actor_id表示输入的参数,参数名就是actor_id.如果输入参数是简单类型,参数可以任意。
resultType:指定sql输出结果所映射的java对象。
-->
<select id="findUserById" parameterType="int" resultType="com.cupdata.zicon.cobatis.User">
SELECT * FROM ACTOR WHERE ACTOR_ID=#{actor_id}
</select>
</mapper>


3.在SqlMapConfig.xml中加载User.xml

<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"></mapper>
</mappers>
4.编写程序1

package com.cupdata.zicon.cobatis;

import java.io.IOException;
import java.io.InputStream;

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.Test;

public class MybatisFirst {
// 根据ID查询用户,得到一条记录结果
@Test
public void findUserByIdTest() throws IOException {
// mybatis配置文件
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建会话工厂,builder中要传入配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
// 得到sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 操作数据库
// 第一个参数:映射文件中statement的id,等于==命名空间+"."+statement的id
// 第二个参数:指定和配置文件中匹配的ParameterType类型的参数
User user = sqlSession.selectOne("test.findUserById", 1);
System.out.println(user.getFirst_name() + " " + user.getLast_name());
System.out.println(user.getLast_update());
// 释放资源
sqlSession.close();
}
}
5.编写程序2

1)增加User.xml

<!-- 根据用户名称模糊查询用户信息,可能返回多条
<span style="white-space:pre">	</span> resultType:指定单条记录所映射的java对象
<span style="white-space:pre">	</span> ${}:表示拼接sql串,將接收到的內容不加任何形式拼接在sql中。
<span style="white-space:pre">	</span> 使用该方式可能会引起sql注入。
<span style="white-space:pre">	</span> 注意:${value}:接收输入参数的内容,如果传入的类型是简单类型,${}中只能使用value
<span style="white-space:pre">	</span> -->
<span style="white-space:pre">	</span><select id="findUserByName" parameterType="java.lang.String"
<span style="white-space:pre">		</span>resultType="com.cupdata.zicon.cobatis.User">
<span style="white-space:pre">		</span>SELECT * FROM ACTOR WHERE FIRST_NAME LIKE '%${value}%'
<span style="white-space:pre">	</span></select>
2)增加方法

// 根据用户名称模糊查询用户信息
@Test
public void findUserByNameTest() throws IOException {
// mybatis配置文件
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建会话工厂,builder中要传入配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
// 得到sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 使用sqlSession操作数据库
// List中user和映射文件中resultType所指定的类型一致
List<User> list = sqlSession.selectList("test.findUserByName", "PENELOPE");
System.out.println(list);
// 释放资源
sqlSession.close();
}


6.总结

1. parameterType:在映射文件中通过parameterType指定输入参数的类型

2. resultType:在映射文件中通过resultType指定输出参数的类型

3. #{}:表示一个占位符,${}:表示拼接符号,会引起sql注入,不建议使用

4. SelectOne:表示查询出一条记录进行映射;selectList表示查询出一个列表(多条记录)进行映射
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: