Mybatis框架基础学习(二)
2015-10-08 23:34
387 查看
示例工程:
1. 配置SqlMapConfig.xml
2. 配置映射文件
1)命名:xxxMapper.xml(例如:userMapper.xml)
3.在SqlMapConfig.xml中加载User.xml
1)增加User.xml
6.总结
1. parameterType:在映射文件中通过parameterType指定输入参数的类型
2. resultType:在映射文件中通过resultType指定输出参数的类型
3. #{}:表示一个占位符,${}:表示拼接符号,会引起sql注入,不建议使用
4. SelectOne:表示查询出一条记录进行映射;selectList表示查询出一个列表(多条记录)进行映射
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表示查询出一个列表(多条记录)进行映射
相关文章推荐
- 浏览器兼容性问题汇总
- mysql-procedure多参数(测试)
- Theano入门——MNIST数据库
- Dev tdxDBTreeView
- [DP]Codeforces Round #323 (Div. 2)DOnce Again...
- james 安装
- HDU 5128 暴力
- PHP实现html生成pdf、html生成图片 利用wkhtmltox,wkhtmltopdf扩展
- 《Effective STL》条款3-条款4
- 《微软的软件测试之道》读书笔记
- HDU 5136 DP
- HDU4903The only survival(clj计数问题ppt)
- Python的哲学
- AugularJS特性
- php——composer 1、安装使用
- 黑马程序员-------封装 继承 多态 的一些概念
- 高手对了网站搜索可用性的一些总结
- 包的应用
- 目标检测——CodeBook背景建模(原理+Opencv实现代码)
- BestCoder Round #56 (div.2) HDU5463 Clarke and minecraft