您的位置:首页 > 其它

mybatis入门HelloWorld程序

2017-06-09 21:38 429 查看
注意我这里使用的是maven项目:

第一步加入架包:



第二步配置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的增删改查对应的ID
public 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: