MyBatis-环境配置以及查询

1.mybatis官网

https://github.com/mybatis
https://github.com/mybatis/mybatis-3/releases

2.mybatis配置文件、代码举例
需要有两个配置文件:
1)sqlMapConfig.xml配置数据源,事务等mybatis运行环境,该xml文件名可以自己定义。
2)xxxmapper.xml配置文件,配置对象sql语句映射文件,该文件名可随意定义。
以查询Student对象为例,配置数据的结构如下所示:       
├─config
│  │  log4j.properties
│  │  sqlMapConfig.xml // 名称随意,在SqlSessionFactoryBuilder创建SqlSessionFactory时指定该名称即可。
│  │  
│  └─mapper
│          studentMapper.xml//名称随意,在sqlMapConfig.xml文件中指定即可。
│          
├─lib
│      cglib-3.2.2.jar
│      commons-logging-1.2.jar
│      javassist-3.20.0-GA.jar
│      log4j-1.2.17.jar
│      log4j-core-2.3.jar
│      mybatis-3.4.0.jar
│      mybatis-spring-1.3.0.jar
│      mysql-connector-java-5.1.22-bin.jar
│      ognl-3.1.2.jar
│      slf4j-api-1.7.21.jar
│      slf4j-log4j12-1.7.21.jar
│      
└─src
    └─mybatis
            MybatisTest.java
            Student.java
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">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/high"/>
        <property name="username" value="root"/>
        <property name="password" value="1234"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
    <mapper resource="mapper/studentMapper.xml"/>
  </mappers>
</configuration>
2)xxxmapper.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 namespace="student">
	<!-- id可以理解为标识sql statement的唯一标识 -->
	<!--
	<span style="white-space:pre">	</span>MyBatis中占位符的表达方式若为简单类型,#{}中可以使用任意的形参,若复杂类型必须是xxx.属性名.属性名。
		resultType指定需要映射的类型。
	 -->
	<select id="findStudentById" parameterType="int" resultType="mybatis.Student">
		select * from student where id = #{id}
	</select>
	
	<!-- 模糊查询举例 %%在调用的地方添加 ,这样可以防止sql注入-->
	<!-- 注意这里虽然返回时多天,但是resultType还是Student而不是List -->
	<select id="findStudentByName" parameterType="String" resultType="mybatis.Student">
		select * from student where name like #{name};
	</select>
	
	<!-- 可以使用${}进行拼接sql串,来将%%直接嵌入语句中,注意这种写法有可能发生sql注入-->
	<!-- **注意,此时${}中只能使用形参value,而不能是任意的形参 -->
	<select id="findStudentByName" parameterType="String" resultType="mybatis.Student">
		select * from student where name like '%${value}%';
	</select>
	
</mapper>
3)另外,由于使用了log4j用来输出log,所以需要再src目录下配置 log4j.properties 文件。
# Global logging configuration
#When release DEBUG->info or ERROR
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
4)MyBatisTest.java
package mybatis;

import java.io.IOException;
import java.io.InputStream;
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;

public class MybatisTest {
	public static void main(String[] args) throws IOException{
		//指定mybatis的配置文件
		InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
		
		//得到 SqlSessionFactory接口引用 用来创建SqlSession接口引用
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		
		//通过工厂来获取SqlSession接口
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		//通过 SqlSession接口 操作数据库(发出sql进行CRUD)
		//第一个参数 mapper中namespace.statementid
		int studentId = 13;
		Student student = (Student)sqlSession.selectOne("student.findStudentById", studentId);
		
		//注意第二个参数需要加上 % %
		List<Student> students = sqlSession.selectList("student.findStudentByName", "%y%");
		sqlSession.close();
		
		System.out.println(student);
		System.out.println(students);
	}
}
3.小结
1)xxxMapper.xml文件中通过parameterType指定查询语句占位符参数的类型,resultType来指定查询结果的类型(注意不是list,而是映射类的类型)。
2)#{}标识占位符,形参名字可以任意,不会引起SQL注入。${}sql语句连接符,形参必须使用value,会引起sql注入。
3)selectOne查询一条数据,selectList查询多条数据。

<完>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值