Mybatis框架基础学习(二)

来源:互联网 发布:网络黄金 编辑:程序博客网 时间:2024/05/01 13:46

示例工程:

1. 配置SqlMapConfig.xml

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE configurationPUBLIC "-//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 mapperPUBLIC "-//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的idparameterType:指定输入参数的类型#{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查询用户,得到一条记录结果@Testpublic void findUserByIdTest() throws IOException {// mybatis配置文件String resource = "SqlMapConfig.xml";// 得到配置文件流InputStream inputStream = Resources.getResourceAsStream(resource);// 创建会话工厂,builder中要传入配置文件信息SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 得到sqlSessionSqlSession 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)增加方法

// 根据用户名称模糊查询用户信息@Testpublic void findUserByNameTest() throws IOException {// mybatis配置文件String resource = "SqlMapConfig.xml";// 得到配置文件流InputStream inputStream = Resources.getResourceAsStream(resource);// 创建会话工厂,builder中要传入配置文件信息SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 得到sqlSessionSqlSession 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表示查询出一个列表(多条记录)进行映射




0 0
原创粉丝点击