mybatis使用步骤

Posted tomcat9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis使用步骤相关的知识,希望对你有一定的参考价值。

先导jar包??
mybatis-3.4.6.jar
mysql-connector-java-5.1.39.jar
创建映射文件 "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="db.properties"/>
<environments default="development">
 
<!-- 代表连接数据库的环境信息 -->
<environment id="development">
 
<!-- 配置事务管理器 type="jdbc" 事务 要么一起成功,要么一起失败 -->
<transactionManager type="jdbc"/>
 
<!-- 配置数据源信息 type="jdbc / pooled / unpooled" jdbc 连接方式 pooled 连接池技术-->
<dataSource type="pooled">
<property name="driver" value="$driver"/>
<property name="url" value="$url"/>
<property name="username" value="$username"/>
<property name="password" value="$password"/>
 
</dataSource>
 
</environment>
 
 
</environments>
<mappers>
<!-- 引入映射文件的路径信息 -->
<mapper class="com.mypack.dao.UserDao"/>
 
</mappers>
 
 
</configuration>

 


 
 
 
 
 
注释:这个xml文件必须遵循标签的先后顺序(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?,
mappers?)
 
创建属性文件 db.properties??
引入时用:<properties resource="db.properties"/>
根据数据库里的表创建实体类,字段要一一对应,也要写gatset方法
创建dao层接口,里面实行具体的sql语句
@Select("select * from users")
public List<Users> queryAllUsers();
第二种配置映射文件的方法
dao层包下的类与xml映射文件名称相同
??
 
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.mypack.mapper.UserMapper" namespace表示命名空间 一般写 成包名.文件名-->
 
<mapper namespace="com.mypack.dao.StudentDao">
 
<!-- 配置属性和字段映射关系 一对一关系-->
<resultMap type="Student" id="studentResultMap">
<id property="sid" column="s_id"/>
<result property="sname" column="s_name"/>
<association property="banji" javaType="BanJI">
<id property="cid" column="c_id"/>
<result property="cname" column="c_name"/>
 
</association>
 
</resultMap>
 
<select id="queryOneStuById" parameterType="int" resultMap="studentResultMap">
select * from student s,class c where s.class_id =c.c_id and s.s_id=#sid
 
</select>
</mapper>

 


 
 
 
 
 

?
dao.java代码:
?
import com.mypack.entity.Student;

public interface StudentDao

  public Student queryOneStuById(int id);      

 

?
测试类
@Test
public void testQueryAll()
SqlSession session = MyBatisUtil.getSqlSession();
UserDao userdao = session.getMapper(UserDao.class);
List<Users> queryAllUsers = userdao.queryAllUsers();
for (Users users : queryAllUsers)
System.out.println(users);
session.close();
 
 

?
MybatisUtil类代码:
 
public class MyBatisUtil 
 
public static SqlSessionFactory getSqlSessionFactory()
 
// mybatis的配置文件
String resource = "mybatis.xml";
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(
resource);
// 构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
.build(is);
return sessionFactory;

 
public static SqlSession getSqlSession()
return getSqlSessionFactory().openSession(true);

 

 

 
 
 
 
 
 
 

?
配置别名
<!-- 别名配置 -->
<!-- 配置方式一 -->
<!-- //单个重命名
<typeAliases>
<typeAlias type="com.mypack.entity.User" alias="User"/>
</typeAliases>
-->
<!-- 配置方式二 -->//批量重命名
<!-- 该包下的所有的类都可以直接写类名 -->
<typeAliases>
<package name="com.mypack.entity"/>
</typeAliases>
<!-- 这个是批量重命名-->
注:配置写在mybatis核心映射文档里的<configuration></configuration>标签里,就是第二步的映射文件
解决字段名与类的属性名不一致问题
 
<!-- 配置属性和字段映射关系 一对一关系-->//这个写在dao层下的映射文件里
<resultMap type="Student" id="studentResultMap">
<id property="sid" column="s_id"/>//表里的主键,property类里的属性, column表里的字段名
<result property="sname" column="s_name"/>//不可分割的单一类型
<association property="banji" javaType="BanJI">//可分割的多重类型
<id property="cid" column="c_id"/>
<result property="cname" column="c_name"/>
 
</association>
 
</resultMap>
 
配置log4j
 
1.导jar包
log4j-1.2.17.jar
??
2.配置log4j.properties文件

?
 
log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.kgc.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
 
######################################################################################
# Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
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
 
 
######################################################################################
# DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
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=%dyyyy-M-d HH:mm:ss%x[%5p](%F:%L)%m%n
 
 
log4j.logger.com.opensymphony.xwork2=error

 

 
遇到的坑
模糊查询 差不到中文问题
解决mybatis 模糊查询mysql 中文无法查询到结果的问题
一种原因是字符编码问题 可以修改mysql安装目录下面的my.ini文件
将default-character-set=utf-8 character-set-server=utf8
重启Mysql
用管理员方式启动 cmd 窗口,执行如下语句:
 
使用命令语句“net stop mysql” 停止 mysql 服务
使用命令语句“net start mysql” 启动 mysql 服务

 

以上是关于mybatis使用步骤的主要内容,如果未能解决你的问题,请参考以下文章

markdown [mybatis参考]关于mybatis #mybatis的一些片段

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

mybatis学习(39):动态sql片段

使用mybatis的两种方式

[mybatis]动态sql_sql_抽取可重用的sql片段

markdown 在Intel Nuc上设置Ubuntu Web服务器,步骤和代码片段