mybatis入门-实现基本CRUD操作
来源:互联网 发布:阿里云域名续费优惠 编辑:程序博客网 时间:2024/05/17 06:06
mybatis入门-实现基本CRUD操作
闲着没事,整理整理初学mybatis时候的笔记。另外上传了mybatis的jar包(包括开发jar包以及源代码jar),首先,建立一个java project,创建一个lib文件夹,放入mybatis的jar包跟mysql驱动的jar包,add to build path...。整体效果截图如下:
然后,建立包目录结构和mybatis的配置文件,如上图所示。下面是User实体类:
package com.steadyjack.model;public class User {private Integer id;private String userName;private int age;private String address;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User [id=" + id + ", userName=" + userName + ", age=" + age+ ", address=" + address + "]";}}
建立数据库表:
CREATE Database mybatisuse mybatisCREATE TABLE `tb_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `address` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;INSERT INTO `tb_user` VALUES ('1', 'jack', '12', 'foshan');INSERT INTO `tb_user` VALUES ('2', 'sam', '21', 'guagnzhou');INSERT INTO `tb_user` VALUES ('3', 'jerry', '22', 'sichuang');INSERT INTO `tb_user` VALUES ('4', 'silly', '23', 'chengdu');INSERT INTO `tb_user` VALUES ('8', 'july', '24', 'beijing');
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"><configuration><!-- 别名 --><typeAliases><package name="com.steadyjack.model"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><!-- url中还配置了字符编码,防止插入中文到数据库时候出现乱码,注意用&代替&; --><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments> <mappers><mapper resource="com/steadyjack/mappers/userMapper.xml" /></mappers></configuration>
建立UserDao:
package com.steadyjack.mappers;import java.util.List;import com.steadyjack.model.User;/** * 面向接口编程 * @author android * */public interface UserDao {public User getUserById(Integer id);public List<User> getUserList(User user);public void addUser(User user);public int updateUser(User user);public int deleteUser(Integer id);}
建立UserMapper,其实就是UserDao的实现(从namespace就可以看出来了)
<?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.steadyjack.mappers.UserDao"> <resultMap type="User" id="resultListUser"> <id column="id" property="id" /> <result column="userName" property="userName" /> <result column="age" property="age" /> <result column="address" property="address" /> </resultMap> <select id="getUserById" parameterType="Integer" resultMap="resultListUser"> select * from tb_user where id = #{id} </select> <select id="getUserList" parameterType="User" resultMap="resultListUser"> <!-- select * from tb_user where userName like "%"#{userName}"%" --> select * from tb_user <where> <if test="userName!=null"> <!-- and userName like "%"#{userName}"%" and mybatis会自动去掉的 --> userName like "%"#{userName}"%" </if> <if test="address!=null"> or address like "%"#{address}"%" </if> </where> </select> <insert id="addUser" parameterType="User"> insert into tb_user(userName,age,address) values(#{userName},#{age},#{address}) </insert> <update id="updateUser" parameterType="User"> <!-- update tb_user set userName=#{userName},age=#{age},address=#{address} where id=#{id} --> update tb_user set <set> <if test="userName!=null"> userName=#{userName}, </if> <if test="address!=null"> address=#{address} </if> </set>where id=#{id} </update> <delete id="deleteUser" parameterType="Integer"> delete from tb_user where id=#{id} </delete> </mapper>
最后是UserTest,测试接口中的各个方法:
package com.steadyjack.test;import java.io.IOException;import java.io.InputStream;import java.io.Reader;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import com.steadyjack.mappers.UserDao;import com.steadyjack.model.User;public class UserTest {private static SqlSessionFactory sessionFactory;//private static Reader reader;private static final String loaction="mybatis-config.xml";static{try {//getResourceAsReader 发现底层实现的原理还是InputSteamReader(inputstream来实现的)//reader=Resources.getResourceAsReader("mybatis-config.xml");//sessionFactory = new SqlSessionFactoryBuilder().build(reader);InputStream stream=UserTest.class.getClassLoader().getResourceAsStream(loaction);sessionFactory=new SqlSessionFactoryBuilder().build(stream);} catch (Exception e) {System.out.println(e.getMessage());}}public static SqlSessionFactory getSession(){return sessionFactory;}@Testpublic void testGet(){SqlSession session=sessionFactory.openSession();UserDao userDao=session.getMapper(UserDao.class);User user=userDao.getUserById(4);System.out.println(user);}@Testpublic void testQueryList(){SqlSession session=sessionFactory.openSession();UserDao userDao=session.getMapper(UserDao.class);User user=new User();user.setAddress("州");List<User> userList=userDao.getUserList(user);for (User u : userList) {System.out.println(u);}}@Testpublic void testAdd(){SqlSession session=sessionFactory.openSession();UserDao userDao=session.getMapper(UserDao.class);User user=new User();user.setUserName("j");user.setAge(12);user.setAddress("f");try {userDao.addUser(user);session.commit();System.out.println("id: "+user.getId());} catch (Exception e) {System.out.println("提交事务发生异常: "+e.getMessage());} finally{session.close();}}@Testpublic void testUpdate(){SqlSession session=sessionFactory.openSession();UserDao userDao=session.getMapper(UserDao.class);User user=userDao.getUserById(12);System.out.println("原先的User: "+user);if (user!=null) {user.setUserName("steayjack");user.setAge(25);user.setAddress("上海");int res=0;try {res=userDao.updateUser(user);session.commit();System.out.println("提交成功: "+user.getId()+" -- 操作返回结果: "+res);} catch (Exception e) {System.out.println("提交事务发生异常:"+e.getMessage());} finally{session.close();}}else{throw new RuntimeException("没有该用户!");}}@Testpublic void testDelete(){SqlSession session=sessionFactory.openSession();UserDao userDao=session.getMapper(UserDao.class);try {int res=userDao.deleteUser(5);System.out.println("执行结果:"+res);session.commit();} catch (Exception e) {System.out.println("提交事务发生异常: "+e.getMessage());} finally{session.close();}}}
没有涉及到什么关联映射之类的(其实,我在公司中实际的项目是不做实际的数据库关联的!)
好了,就介绍到这里吧!我觉得这样入门的话,贼简单的!!!!后期会来一个spring springmvc mybatis的整合案例!!!
0 0
- mybatis入门-实现基本CRUD操作
- MyBatis(一) 入门案例实现CRUD操作
- MyBatis实现CRUD操作
- [mybatis]基本的CRUD操作
- Mybatis入门到精通-利用SqlSession实现CRUD操作
- MyBatis入门02 实现CRUD
- Mybatis最入门---基本增改删查(CRUD)
- Mybatis最入门---基本增改删查(CRUD)
- JDBC入门(一)基本CRUD操作
- Mybatis CRUD 操作(XML实现)
- mybatis(一)—-实现crud操作
- hibernate 入门操作----实现crud 操作
- hibernate 配置--入门操作----实现crud 操作
- Android访问SQlite实现基本CRUD操作
- JAVA实现DAO层基本CRUD操作
- JAVA实现DAO层基本CRUD操作
- YII入门 (3) -- 实现 CRUD 操作
- 【Mybatis学习总结二】Mybatis操作数据表的CRUD实现
- ObjectInputStream流的应用
- 【2016-CCPC-A】水题(A water problem,hdu 5832)
- Android APP启动黑白屏问题解决方案
- 分解质因数(Java)
- 【Java 并发系列】Java SE1.6中的Synchronized
- mybatis入门-实现基本CRUD操作
- Bootstrap模板分析:按钮篇
- Android之进度条ProgressBar
- 信鸽推送
- java.lang.AbstractMethodError: Method oracle/jdbc/driver/T4CPreparedStatement.getParameterMetaData()
- java开发环境搭建
- Qt 判断数据库db中 table是否已经创建
- android Fragments详解七:fragement示例
- 【Linux c】USB