mybatis入门HelloWorld程序
2017-06-09 21:38
429 查看
注意我这里使用的是maven项目:
第一步加入架包:
第二步配置mybatis配置文件,在src下面建立文件mybatis.xml文件:
第三步建立一个Java文件,和一个mybatis的映射文件:
第四步mybatis.xml配置文件的内容为:
第五步department_mapp.xml文件内容:
第六步HelloWorld文件中的内容:
必须一致,并且跟节点的namespace属性对应接口的全路径,否则编译
不会通过,通过根目录下的mybatis的配置文件来引用
接口映射(注解):
全路径映射,不用配置文件
mybatis的动态参数:
当我们在写sql语句的时候,有些参数需要是动态的,这时候我们就需要使用到
动态参数传递
1.#{参数|下标(0开始)}
使用#的方式传参可以避免sql注入问题
2.${参数|下标(0开始)}
使用$的方法不能避免sql注入问题,他是直接字符串拼接
注意:使用动态传参在使用注解的时候需要指定一个@Param注解在参数
的前面比如:
注意:使用mybatis在取数据库的数据时如果数据库中的一些列为空则取出来的是Undefined,如果需要将该值转换则需要在mybatis配置文件中配置如下:
mybatis输入sql日志:
导入架包log4j.jar或者使用maven:
<!--
导入log4j日志
-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>在根目录下创建log4j.properties文件文件内容为:
#debug代表打印日志
#
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG 详细内容请参考:http://blog.csdn.net/neutron117/article/details/51836006
第一步加入架包:
第二步配置mybatis配置文件,在src下面建立文件mybatis.xml文件:
第三步建立一个Java文件,和一个mybatis的映射文件:
第四步mybatis.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> <!-- 读取资源文件 --> <properties resource="com/et/TL/Mybatis/lesson01/utils/jdbc.properties"></properties> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <!-- 连接数据库 --> <dataSource type="POOLED"> <property name="driver" value="${classDriverManageName}"/> <property name="url" value="${url}"/> <property name="username" value="${userAccount}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 引用映射文件 --> <mappers> <mapper resource="com/et/TL/Mybatis/lesson01/helloworld/department_mapp.xml"/> <mapper resource="com/et/TL/Mybatis/lesson01/baseInterface/department_mapp.xml"/> </mappers> </configuration>
第五步department_mapp.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="com.et.TL.Mybatis.lesson01.helloworld.department_mapp"> <select id="query" resultType="map"> select * from department </select> </mapper>
第六步HelloWorld文件中的内容:
package com.et.TL.Mybatis.lesson01.helloworld; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; 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 HelloWorld { public static SqlSession getSqlSession(String myBatisXmlFile) throws IOException{ //1.加载src下的mybatis配置文件 InputStream is = Resources.getResourceAsStream(myBatisXmlFile); //2.创建SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); //3.获取加载sql语句的SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //4.返回sqlSession return sqlSession; } /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //1.加载src下的mybatis配置文件 InputStream is = Resources.getResourceAsStream("mybatis.xml"); //2.创建SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); //3.获取加载sql语句的SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //4.得到department_mapp的映射文件的namespace和查询语句的id String statement = "com.et.TL.Mybatis.lesson01.helloworld.department_mapp.query"; //5.调用sqlSession对象中的方法 selectList List<Map<String,Object>> listObj = sqlSession.selectList(statement); //6.循环打印 for (Map<String, Object> map : listObj) { System.out.println("DeptID:"+map.get("DEPARTMENTID")+" DeptName:"+map.get("DEPARTMENTNAME")+" DeptAddr:"+map.get("DEPARTMENTLOCATION")); System.out.println("-------------------------------------"); } } }
接口映射:
创建一个接口,接口里面的方法必须和***_mapp.xml的增删改查对应的IDpublic List<Map<String,Object>> query();
必须一致,并且跟节点的namespace属性对应接口的全路径,否则编译
<mapper namespace="com.et.TL.Mybatis.lesson01.baseInterface.HelloWorld"> <select id="query" resultType="map"> select * from department </select> </mapper>
不会通过,通过根目录下的mybatis的配置文件来引用
<!-- 引用映射文件 --> <mappers> <mapper resource="com/et/TL/Mybatis/lesson01/helloworld/department_mapp.xml"/> <mapper resource="com/et/TL/Mybatis/lesson01/baseInterface/department_mapp.xml"/> </mappers>
接口映射(注解):
package com.et.TL.Mybatis.lesson01.InterfaceNote; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Select; public interface HelloWorld { /** * 对应的sql语句使用对应的sql注解 * @return */ @Select(value="select * from department") public List<Map<String,Object>> query(); }使用接口注解,当我们在mybatis配置文件配置映射的时候,我们只需要将该接口的
全路径映射,不用配置文件
<mapper class="com.et.TL.Mybatis.lesson01.InterfaceNote.HelloWorld"/>
mybatis的动态参数:
当我们在写sql语句的时候,有些参数需要是动态的,这时候我们就需要使用到
动态参数传递
1.#{参数|下标(0开始)}
使用#的方式传参可以避免sql注入问题
2.${参数|下标(0开始)}
使用$的方法不能避免sql注入问题,他是直接字符串拼接
注意:使用动态传参在使用注解的时候需要指定一个@Param注解在参数
的前面比如:
@Select(value="select * from (select t.*,rownum rn from employee t where t.employeename like #{ename} order by employeeid asc) where rn>=#{startIndex} and rn<=#{endIndex}") public List<Map<String,Object>> queryLeave(@Param(value="ename")String ename,@Param(value="startIndex")int startIndex,@Param(value="endIndex")int endIndex);
注意:使用mybatis在取数据库的数据时如果数据库中的一些列为空则取出来的是Undefined,如果需要将该值转换则需要在mybatis配置文件中配置如下:
<!-- 该配置是代表当我们在取到数据库里面的数据为空时,什么都没有 如果不配置,则取到的则是Undefined --> <settings> <setting name="callSettersOnNulls" value="true"/> </settings>
mybatis输入sql日志:
导入架包log4j.jar或者使用maven:
<!--
导入log4j日志
-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>在根目录下创建log4j.properties文件文件内容为:
#debug代表打印日志
#
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG 详细内容请参考:http://blog.csdn.net/neutron117/article/details/51836006
相关文章推荐
- mybatis入门---helloworld程序开发步骤
- Mybatis之入门Helloworld程序
- Qt入门小程序——HelloWorld
- Java语言程序设计-Eclipse入门之HelloWorld程序与例1-1程序
- mybatis 入门HelloWorld
- JNI入门 一个JNI的HelloWorld 程序
- 【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld
- j2me入门篇---编写helloworld程序
- .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
- [Objective-C]入门 (xcode helloworld程序 创建类)
- java 学习笔记(入门篇)_java程序helloWorld
- (GAE)Google App Engine入门程序——helloworld
- JNI入门 一个JNI的HelloWorld 程序
- 【转载】黑莓开发学习(入门教程)04-标准界面的HelloWorld程序
- 【转载】黑莓开发学习(入门教程)03-经典的HelloWorld程序
- 内核模块编程---helloworld简单入门程序(1)
- C#入门之C#特点及HelloWorld程序
- 超经典的 Java 入门之 HelloWorld 程序
- 黑莓开发学习(入门教程)标准界面的HelloWorld程序
- Java语言程序设计-Eclipse入门之HelloWorld程序