MyBATIS利用CRUD
当前位置:以往代写 > JAVA 教程 >MyBATIS利用CRUD
2019-06-14

MyBATIS利用CRUD

MyBATIS利用CRUD

副标题#e#

MyEclipse不提供自动生成,这里提供mybatis文件包和开拓文档 http://download.csdn.net/detail/u010026901/7489319

本身成立设置文件,

<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"   />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"   />
<property name="url" value="jdbc:oracle:thin:@192.168.2.55:ORCL"   />
<property name="username" value="ysk"   />
<property name="password" value="123"   />
</dataSource>
</environment>
</environments>
<mappers>
<!--这里填写dao接口映射的daoImpl,mybatis不是映射pojo(vo)类,而是dao类-->
    
<mapper resource="com/kane/dao/NewsDAOImpl.xml"   />
</mappers>
</configuration>

本身设置链接的sqlsessionFactory类,相当于hibernate的sessionFactory对应一个数据库
 

package com.kane.dbc;
    
    
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 MyBATISSqlSessionFactory {
    
    
// 设置文件的地址位置和名称
private static String CONFIG_FILE_LOCATION = "mybatis-conf.xml";
    
    
// 用来实现毗连池的,该类雷同Map荟萃。
private static final ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
// MyBATIS用来读取设置文件的类
private static InputStream is;
// 用来成立毗连的,该类就是毗连池,利用单例设计模式
private static SqlSessionFactory sqlsessionFactory;
// 备用的设置文件位置
private static String configFile = CONFIG_FILE_LOCATION;
    
    
// 静态块,类加载时最先执行
static {
try {
// 加载设置文件到内存中
is = Resources.getResourceAsStream(configFile);
// 成立毗连池以及内里的毗连
sqlsessionFactory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
    
    
private MyBATISSqlSessionFactory() {
}
    
    
/**
* 取得数据库毗连工具
* 
* @return Session
* @throws HibernateException
*/
public static SqlSession getSession() {
// 先从ThreadLocal中取得毗连。
SqlSession session = (SqlSession) threadLocal.get();
    
    
// 假如手头没有毗连,则取得一个新的毗连
if (session == null) {
session = sqlsessionFactory.openSession();
// 把取得出的毗连记录到ThreadLocal中,以便下次利用。
threadLocal.set(session);
}
    
    
return session;
}
    
    
/**
* 毗连封锁的要领
* 
* @throws HibernateException
*/
public static void closeSession() {
SqlSession session = (SqlSession) threadLocal.get();
// 将ThreadLocal清空,暗示当前线程已经没有毗连。
threadLocal.set(null);
// 毗连放回到毗连池
if (session != null) {
session.close();
}
}
}


#p#副标题#e#

通过设置文件实现daoimpl而不是java类

<?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.kane.dao.INewsDAO">
<insert id="doCreate" parameterType="News">
    
<!--jdbcType暗示这个内容答允为空,为Oracle指明范例

若表中的列名与vo中列名差异,可以重定名

SELECT
id,title,content,pub_date AS pubDate,type_id AS typeId,photo,tname FROM news n,news_type nt
WHERE id = #{id} AND n.type_id = nt.tid -->
    
INSERT INTO NEWS(news_id,news_title,image_id,news_content,news_time) VALUES
(sys_guid(),#{news_title},#{image_id},#{news_content,jdbcType=VARCHAR},#{news_time,jdbcType=DATE})
</insert>
<delete id="doRemove" parameterType="java.lang.Integer">
DELETE FRON News WHEER news_id=#{id}
</delete>
<update id="doUpdate" parameterType="News">
UPDATE News SET news_title=#{news_title},image_id=#{image_id},news_content=#{news_content},news_time=#{news_time}
WHERE news_id=#{news_id}
</update>
<select id="findAll" resultType="News">
SELECT news_id,news_title,image_id,news_content,news_time FROM News
</select>
<select id="findById" resultType="News">
SELECT news_id,news_title,image_id,news_content,news_time FROM News=#{id}
</select>
<select id="findAllSplit" resultType="News" parameterType="java.util.Map">
SELECT temp.* FROM (SELECT news_id,news_title,image_id,news_content,news_time,ROWNUM rn 
FROM News WHERE ${column} LIKE #{keyword} AND ROWNUM &lt;=#{endNum})
temp WHERE temp.rn>#{startNum}
</select>
<select id="getAllCount" resultType="java.lang.Integer" parameterType="java.util.Map">
SELECT COUNT(*) FROM News WHERE ${column} LIKE #{keyword}
</select>
</mapper>

#p#分页标题#e#

接着service,在serviceImpl中

package com.kane.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.kane.dao.INewsDAO;
import com.kane.dbc.MyBATISSqlSessionFactory;
import com.kane.service.INewsService;
import com.kane.vo.News;
    
    
public class NewsServiceImpl implements INewsService{
    
    
public List<News> findAll(){
List<News> all=null;
try {
all=MyBATISSqlSessionFactory.getSession().getMapper(INewsDAO.class).findAll();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
MyBATISSqlSessionFactory.closeSession();
}
return all;
}
public void insert(News news) throws Exception {
try {
MyBATISSqlSessionFactory.getSession().getMapper(INewsDAO.class).doCreate(news);
MyBATISSqlSessionFactory.getSession().commit();
} catch (Exception e) {
MyBATISSqlSessionFactory.getSession().rollback();
e.printStackTrace();
}
finally{
MyBATISSqlSessionFactory.closeSession();
}
}
public Map<String, Object> list(int pageNo, int pageSize, String column,String keyword){
Map<String,Object> map=new HashMap<String,Object>();
Map<String,Object> params=new HashMap<String, Object>();
params.put("column",column);
params.put("keyword",keyword);
params.put("endNum",pageSize*pageNo);
params.put("startNum",(pageNo-1)*pageSize);
try {
map.put("allNews", MyBATISSqlSessionFactory.getSession().getMapper(INewsDAO.class)
.findAllSplit(params));
map.put("count", MyBATISSqlSessionFactory.getSession().getMapper(INewsDAO.class)
.getAllCount(params));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
MyBATISSqlSessionFactory.closeSession();
}
return map;
}
public void remove(int id) throws Exception {
// TODO Auto-generated method stub
    
}
public void update(News news) throws Exception {
// TODO Auto-generated method stub
    
}
public News findById(int id){
News news=null;
try {
news=MyBATISSqlSessionFactory.getSession().getMapper(INewsDAO.class).findById(id);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
MyBATISSqlSessionFactory.closeSession();
}
return news;
}
}
    
然后junit测试
    
@Test
public void testList() throws Exception {
System.out.println(ServiceFactory.getNewsServiceInstance().list(1, 5,
"news_title", "12"));
}

From:csdn博客 芳华张开

    关键字:

在线提交作业