MyBATIS使用CRUD

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();

}

}

}

通过配置文件实现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>

接着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"));

}

MyBATIS使用CRUD,布布扣,bubuko.com

时间: 2024-12-19 23:19:32

MyBATIS使用CRUD的相关文章

【MyBatis】MyBatis实现CRUD操作

1.实现基本CRUD功能 使用MyBatis对数据完整的操作,也就是CRUD功能的实现.根据之前的内容,要想实现CRUD,只需要进行映射文件的配置. 范例:修改EmpMapper.xml文件,实现CRUD <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http:/

尚硅谷-MyBatis的CRUD操作

项目结构: User实体类代码: package com.atguigu.mybatis.bean; public class User { private int id; private String name; private int age; public User() { super(); } public User(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = ag

MyBatis Tutorial – CRUD Operations and Mapping Relationships – Part 1---- reference

http://www.javacodegeeks.com/2012/11/mybatis-tutorial-crud-operations-and-mapping-relationships-part-1.html CRUD OperationsMyBatis is an SQL Mapper tool which greatly simplifies the database programing when compared to using JDBC directly. Step1: Cre

mybatis 通用CRUD的替换方法

http://git.oschina.net/alexgaoyh/MutiModule-parent 代码此次变更较大,使用了mybatis-generator-maven-plugin 插件,把之前多模块项目中的domain部分删除,将这一部分代码整合到persise部分,原因是使用mybatis-generator-maven-plugin插件的时候,能够自动生成实体类,减少代码移动相关的工作量. 前一段时间使用maven多模块项目整合了spring mybatis部分,最近在处理通用CRU

mybatis实现CRUD操作和优化代码及调试(mysql数据库)(三)

继续(二)说 1.工程结构 2.新建db.properties文件(我的数据库没有设置密码) driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis name=root password= 3.log4j.jar加入工程并添加log4j.xml文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:conf

spirngmvc整合mybatis实现CRUD

一.建立一张简单的User表 CREATE TABLE `users` ( `id` int(20) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` int(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8; -- ------------------------------ Records o

mybatis在CRUD

一. 一个简短的引论: Mybatis本是apache的一个开源项目ibatis, 2010年这个项目由apache software foundation迁移到了google code, 而且改名为Mybatis. Mybatis是一个基于Java的持久层框架. 二. 增删改查: 1. 代码结构图: 2. User实体类: /** * User实体类 */ public class User { private String id; private String uname; // 注意: 该

Spring boot 入门三:spring boot 整合mybatis 实现CRUD操作

开发环境延续上一节的开发环境这里不再做介绍 添加mybatis依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> DAO层接口(这里是直接通过注解实现数据库操作,不

基于MyBatis的CRUD操作

一.基于XML实现1.定义SQL映射XML文件studentMapper.xml:<mapper namespace="com.mapping.studentMapper">    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getStudent,id属性值必须是唯一的,不能够重复    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型    resultType=&