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=%d{yyyy-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 服務

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM