想要使用一个MyBaties首先我们需要把架包下载好,
架包如下图所示
我们把架包放入项目中的lib文件夹后创建一个resources的文件夹。创建方式如下:
选中项目名→右键→鼠标悬浮在new这个选项→看到Source Folder后单击。然后会弹出以下框。
注意:这个文件夹的命名必须为resources
然后我们单击finish就创建好了这个文件夹。然后我们在resources文件夹下创建一个database.properties文件,一个log4j.properties的文件,一个mybatis-config.xml文件。
database.properties文件配置如下
#MySql的JDBC驱动
driver=com.mysql.jdbc.Driver
#url=jdbc:mysql://本机ip地址:mysql的端口号/数据库名/转码
url=jdbc:mysql://127.0.0.1:3306/prisoner? useUnicode=true&characterEncoding=utf-8
#Mysql的用户名
user=root
#密码
password=123
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
log4j.properties的配置文件只需把以下代码放复制进去就可以了
log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.smbms.dao=debug
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
log4j.logger.com.opensymphony.xwork2=error
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
mybatis-config.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">
<!-- 通过这个配置文件完成mybatis与数据库的连接 -->
<configuration>
<!-- resource="database.properties"引入外部样式 优先外部样式 -->
<properties resource="database.properties"/>
<!-- 配置mybatis的log实现为LOG4J -->
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
<environments default="development">
<environment id="development">
<!--配置事务管理,采用JDBC的事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="com/t/dao/typeMapper.xml"/>
</mappers>
</configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
弄完配置文件我们分层一个Entity实体层、dao层、test测试层和util工具层
如下图所示:
实体层typeEntity代码
package com.t.entity;
public class typeEntity {
private int tid;
private String typename;
private int ftid;
public int getTid() {
return tid;
}
public void setTid(int tid) {
this.tid = tid;
}
public String getTypename() {
return typename;
}
public void setTypename(String typename) {
this.typename = typename;
}
public int getFtid() {
return ftid;
}
public void setFtid(int ftid) {
this.ftid = ftid;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
util工具层MyBatisUtil.java代码
package com.t.util;
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;
public class MyBatisUtil {
//声明一个私有SqlSessionFactory
private static SqlSessionFactory sf;
//程序一开始运行时就获得sf对象
static{
try {
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
sf = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获得执行对象
public static SqlSession getSqlSession(){
return sf.openSession();
}
//关闭执行对象
public static void closeSqlSession(SqlSession s){
if(s!=null){
s.close();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
dao层typeMapper.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">
<!--
namespace="接口路径"
resultType="返回值"
parameterType="传进来的参数类型"
我这里返回的是一个实体
里面用了sql的动态拼接
如果name!=null并且name!=""就拼接字符串
typename like concat('%',#{name},'%')是模糊查询
-->
<mapper namespace="com.t.dao.typeMapper">
<select id="selectType" resultType="com.t.entity.typeEntity" parameterType="String">
select * from type
<if test="name!=null and name!=''">
where typename like concat('%',#{name},'%')
</if>
</select>
</mapper>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
dao层typeMapper.java的代码:
package com.t.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.t.entity.typeEntity;
public interface typeMapper {
/**
* @Param("name")引号里面的命名必须和typeMapper中#{name}占位符的{}里面的命名一样
*/
public List<typeEntity> selectType(@Param("name") String name);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
test测试层test.java的代码:
package com.t.test;
import java.util.List;
import com.t.dao.typeMapper;
import com.t.entity.typeEntity;
import com.t.util.MyBatisUtil;
public class Test {
public static void main(String[] args) {
/**
* 因为我传的是一个""没有值,并且我的是一个模糊查询所以能查询全部数据
* typeMapper.class是dao层的接口
* selectType("")是dao层typeMapper.java里面的方法
*/
List<typeEntity> tlist = MyBatisUtil.getSqlSession().getMapper(typeMapper.class).selectType("");
for (typeEntity t : tlist) {
System.out.println(t.getTypename());
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
我在mysql里面的某个数据库新建一个表,表内容如下图:
我查询出的数据如下图所示:
这就完成了一个简单的模糊查询功能