MyBatis-环境配置以及查询
2016-06-13 22:31
323 查看
1.mybatis官网
https://github.com/mybatishttps://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查询多条数据。
<完>
相关文章推荐
- 模式识别(Pattern Recognition)学习笔记(二十三)-- SVM的两大思想:大间隔与核函数
- 来自“Java中国”优秀的程序员不会觉得累成狗是一种荣耀
- 138. Copy List with Random Pointer
- DirectAccess
- leetcode笔记--Majority Element I & II
- 约瑟夫算法
- CodeIgniter学习笔记 Item9--CI中的类库
- mysql查询表的数据大小
- OC拓展(category)
- 大道至简阅读笔记02
- python的datetime库笔记
- Linux Pthread函数列表
- 关于BIEE的权限设计
- 如何获取iOS App素材
- python函数学习笔记
- CentOS下源码安装mplayer播放器
- 走完学习的全程
- 常用字符串与集合类转换的工具类
- scala学习手记10 - 访问修饰符
- debug [LTS]