mybatis学习之入门篇
来源:互联网 发布:淘宝代销分账在哪找呢 编辑:程序博客网 时间:2024/05/22 15:01
初次使用mybatis,做好笔记,自己写个例子。
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis.本文只针对Mybatis如何使用做了一个小实例,无依赖框架spring,单独使用。本文使用Mybatis—3.1.1版本 下载Mybatis—3.1.1 .jar包 将主jar包以及lib下所有jar包复制到工程web-inf下lib中
做为持久层框架就一定要和数据库打交道
首先我们建立我们要使用到的库表
role表 创建sql语句
CREATE TABLE `role` ( `roleId` bigint(20) NOT NULL AUTO_INCREMENT, `roleName` varchar(50) NOT NULL, PRIMARY KEY (`roleId`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
User表 创建sql语句
CREATE TABLE `user` ( `userId` bigint(20) NOT NULL AUTO_INCREMENT, `userName` varchar(30) NOT NULL, `password` varchar(80) NOT NULL, `role_id` bigint(20) NOT NULL, PRIMARY KEY (`userId`), KEY `fk_role` (`role_id`), CONSTRAINT `fk_role` FOREIGN KEY (`role_id`) REFERENCES `role` (`roleId`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
然后创建实体类
package com.mybatis.domain;public class Role {public int roleId;public String roleName;public int getRoleId() {return roleId;}public void setRoleId(int roleId) {this.roleId = roleId;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}}
package com.mybatis.domain;public class User {private int userId;private String userName;private String password;private int role_id;private Role role;public Role getRole() {return role;}public void setRole(Role role) {this.role = role;}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getRole_id() {return role_id;}public void setRole_id(int role_id) {this.role_id = role_id;}}
接下来我们定义接口
package com.mybatis.Dao;
import java.util.List;
import com.mybatis.domain.User;
public interface UserDao {
public int insert(User user);
public int update(User user);
public int delete(String userName);
public List<User> selectAll();
public int countAll();
public User findByName(String username);
}创建加入此接口的映射配置文件——UserDaoMapper.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.mybatis.Dao.UserDao"> <select id="countAll" resultType="int"> select count(*) c from user; </select> <select id="selectAll" resultType="com.mybatis.domain.User"> select * from user order by userName asc </select> <insert id="insert" parameterType="com.mybatis.domain.User"> insert into user(userName,password) values(#{userName},#{password}) </insert> <update id="update" parameterType="com.mybatis.domain.User"> update user set userName=#{userName},password=#{password} where userName=#{userName} </update> <delete id="delete" parameterType="int"> delete from user where userName=#{userName} </delete> <select id="findByName" parameterType="String" resultType="com.mybatis.domain.User"> select * from user where userName=#{userName} <!-- <if test="userName!=null"> and userName=#{userName} </if> --> </select> <select id="findByCon" parameterType="int" resultMap="byCon_result"> select u.userId,u.userName,u.`password`,u.role_id,r.roleId,r.roleNamefrom user u left join role r on u.role_id=r.roleIdwhere u.userId=#{id} </select> <resultMap type="com.mybatis.domain.User" id="byCon_result"> <id column="id" property="userId"/> <result column="userName" property="userName"/> <result column="password" property="password"/> <result column="role_id" property="role_id"/> <association property="role" javaType="com.mybatis.domain.Role"> <id column="roleId" property="roleId"/> <result column="roleName" property="roleName"/> </association> </resultMap></mapper>接着需要创建mybatis主配置文件——MyBatis-Configuration.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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatistest?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" /> <property name="username" value="root" /> <property name="password" value="admin" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/mybatis/domain/UserDaoMapper.xml"/> </mappers></configuration>最后我们编写测试程序package com.mybatis.test;import java.io.IOException;import java.io.Reader;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;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.apache.ibatis.session.SqlSessionManager;import com.mybatis.Dao.UserDao;import com.mybatis.domain.Role;import com.mybatis.domain.User;public class UserDaoTest {private static SqlSessionFactory getSessionFactory(){SqlSessionFactory sessionFactory = null;String resource = "MyBatis-Configuration.xml";try {sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return sessionFactory;}public static void main(String[] args) {SqlSession sqlSession = getSessionFactory().openSession();UserDao userDao = sqlSession.getMapper(UserDao.class);//根据username查询用户User user1 = sqlSession.selectOne("findByName","zhangsan");System.out.println(user1.getUserName());//根据id查询User user = sqlSession.selectOne("findByCon",1);System.out.println(user.getUserName());//查询全部List<User> users = userDao.selectAll();for (int i = 0; i < users.size(); i++) {User us = users.get(i);System.out.println("用户名:"+us.getUserName());System.out.println("密码:"+us.getPassword());}User user2 = new User();user2.setUserName("wangwu");user2.setPassword("123");user2.setRole_id(1);try {//增加用户int nu = userDao.insert(user2);sqlSession.commit();System.out.println("增加"+nu+"个用户");} catch (Exception e) {// TODO Auto-generated catch blocksqlSession.rollback();e.printStackTrace();}finally{sqlSession.close();}}}
- mybatis学习之入门篇
- Mybatis学习之入门篇
- MyBatis学习之入门篇
- MyBatis学习之入门篇(一)
- Mybatis入门学习篇(一)之Mybatis Generator使用
- MyBatis学习之入门 (一)
- Mybatis学习笔记(2)之入门篇
- Github Mybatis深入学习之入门讲解
- 【mybatis学习之入门(一)】
- 框架学习系列 mybatis 第三篇 mybatis入门程序之工程项目的搭建
- 框架学习系列 mybatis 第四篇 mybatis入门程序之需求开发1
- 框架学习系列 mybatis 第七篇 mybatis入门程序之插入数据库后返回主键
- 老司机学习MyBatis教程之MyBatis基础篇简单入门HelloWorld
- 【MyBatis学习02】MyBatis入门
- Mybatis学习笔记(一)-Mybatis入门篇
- 框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询
- 框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1
- MyBatis入门学习教程 MyBatis快速入门
- .attr()和.removeAttr()方法操作元素属性
- Spinner的用法实现
- 打破“中规中矩”,手机QQ何以萌翻众人?
- eclipse启动tomcat, http://localhost:8080无法访问
- 普元EOS开发学习(一)
- mybatis学习之入门篇
- uva12100 Printer Queue (队列模拟, 据说是优先队列,错了)
- ubuntu12.04安装时出现grub rescue:invalid arch independent ELF magic 问题
- 理解C++ 的 private protected public
- 三种编码函数加密的结果
- Grid++Report
- Android扫描指定文件和目录
- u-boot的nand驱动写过程分析
- FTP Client enterLocalPassiveMode