1、domain类

 package com.xiaostudy.mybatis.domain;

 /**
* @desc domain类
* @author xiaostudy
*
*/
public class User {
private int id;
private String username;
private String password; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} 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;
} @Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
} }

2、dao接口

 package com.xiaostudy.mybatis.dao;

 import java.io.IOException;
import java.util.List; import com.xiaostudy.mybatis.domain.User; /**
* @desc dao接口
* @author xiaostudy
*
*/
public interface UserDao { /**
* @desc 根据用户ID查询用户信息
* @param id 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserById(int id) throws Exception; /**
* @desc 根据用户名称查询用户信息
* @param username 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserByUsername(String username) throws Exception; /**
* @desc 根据用户名称模糊查询list集合
* @param username 参数
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findUserByUsernames(String username) throws IOException; /**
* @desc 查询所有用户
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findAllUser() throws IOException; /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int insertUser(User user) throws IOException; /**
* @desc 根据用户id修改用户名称
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsername(User user) throws IOException; /**
* @desc 根据用户id修改用户名称和密码
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsernamePassword(User user) throws IOException; }

3、dao接口实现类

 package com.xiaostudy.mybatis.dao;

 import java.io.IOException;
import java.io.InputStream;
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 com.xiaostudy.mybatis.domain.User; /**
* @desc dao接口实现类
* @author xiaostudy
*
*/
public class UserDaoImpl implements UserDao { private static SqlSessionFactory sqlSessionFactory; static {
//配置文件路径
String resource = "config/SqlMapConfig.xml";
try {
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
// 初始化SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
} @Override
public User findUserById(int id) throws Exception { // 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); // 调用SqlSession的增删改查方法
// 第一个参数:表示statement的唯一标示
User user = sqlSession.selectOne("test.findUserById", id); // 关闭资源
sqlSession.close(); return user;
} @Override
public User findUserByUsername(String username) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserByUsername", username); sqlSession.close(); return user;
} @Override
public List<User> findUserByUsernames(String username) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> users = sqlSession.selectList("test.findUserByUsernames", "%" + username + "%"); sqlSession.close(); return users;
} @Override
public List<User> findAllUser() throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> users = sqlSession.selectList("test.findAllUser"); sqlSession.close(); return users;
} @Override
public int insertUser(User user) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); int i = sqlSession.insert("test.insertUser", user); //添加或修改数据的都要提交事务
sqlSession.commit();
sqlSession.close(); return i;
} @Override
public int updateUserUsername(User user) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); int i = sqlSession.update("test.updateUserUsername", user); sqlSession.commit();
sqlSession.close(); return i;
} @Override
public int updateUserUsernamePassword(User user) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); int i = sqlSession.update("test.updateUserUsernamePassword", user); sqlSession.commit();
sqlSession.close(); return i;
} }

4、配置文件

db.properties

 db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/user?useUnicode=true&amp;characterEncoding=utf8
db.username=root
db.password=123456

SqlMapConfig.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> <!-- 加载java的配置文件 -->
<properties resource="config/db.properties"/> <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="config/User.xml" />
</mappers> </configuration>

User.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"> <!-- namespace:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理时,它具有特殊及重要的作用 -->
<mapper namespace="test">
<!-- 根据用户ID查询用户信息 -->
<!-- select:表示一个MappedStatement对象 -->
<!-- id:statement的唯一标示 -->
<!-- #{}:表示一个占位符? -->
<!-- #{id}:里面的id表示输入参数的参数名称,如果该参数是简单类型,那么#{}里面的参数名称可以任意 -->
<!-- parameterType:输入参数的java类型 -->
<!-- resultType:输出结果的所映射的java类型(单条结果所对应的java类型) -->
<select id="findUserById" parameterType="int" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE id = #{id}
</select> <!-- 根据用户名称查询指定用户 -->
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username = #{username}
</select> <!-- 根据用户名称模糊查询list集合 -->
<select id="findUserByUsernames" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username LIKE #{username}
</select> <!-- 根据所有用户 -->
<select id="findAllUser" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER
</select> <!-- 添加用户 -->
<insert id="insertUser" parameterType="com.xiaostudy.mybatis.domain.User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id()
</selectKey>
insert into user (username, password) values (#{username}, #{password})
</insert> <!-- 修改用户名称 -->
<update id="updateUserUsername" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username} where id=#{id}
</update> <!-- 修改用户名称和密码 -->
<update id="updateUserUsernamePassword" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username}, password=#{password} where id=#{id}
</update> </mapper>

log4j.properties

 # Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

5、mysql



mapper代理

mapper代理接口

 package com.xiaostudy.mybatis.mapper;

 import java.io.IOException;
import java.util.List; import com.xiaostudy.mybatis.domain.User; /**
* @desc dao接口
* @author xiaostudy
*
*/
public interface MapperDao { /**
* @desc 根据用户ID查询用户信息
* @param id 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserById(int id) throws Exception; /**
* @desc 根据用户名称查询用户信息
* @param username 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserByUsername(String username) throws Exception; /**
* @desc 根据用户名称模糊查询list集合
* @param username 参数
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findUserByUsernames(String username) throws IOException; /**
* @desc 查询所有用户
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findAllUser() throws IOException; /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int insertUser(User user) throws IOException; /**
* @desc 根据用户id修改用户名称
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsername(User user) throws IOException; /**
* @desc 根据用户id修改用户名称和密码
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsernamePassword(User user) throws IOException; }

MapperDao.java

mapper代理配置文件

 <?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"> <!-- namespace:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理时,它具有特殊及重要的作用 -->
<mapper namespace="com.xiaostudy.mybatis.mapper.MapperDao">
<!-- 根据用户ID查询用户信息 -->
<!-- select:表示一个MappedStatement对象 -->
<!-- id:statement的唯一标示 -->
<!-- #{}:表示一个占位符? -->
<!-- #{id}:里面的id表示输入参数的参数名称,如果该参数是简单类型,那么#{}里面的参数名称可以任意 -->
<!-- parameterType:输入参数的java类型 -->
<!-- resultType:输出结果的所映射的java类型(单条结果所对应的java类型) -->
<select id="findUserById" parameterType="int" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE id = #{id}
</select> <!-- 根据用户名称查询指定用户 -->
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username = #{username}
</select> <!-- 根据用户名称模糊查询list集合 -->
<select id="findUserByUsernames" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username LIKE #{username}
</select> <!-- 根据所有用户 -->
<select id="findAllUser" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER
</select> <!-- 添加用户 -->
<insert id="insertUser" parameterType="com.xiaostudy.mybatis.domain.User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id()
</selectKey>
insert into user (username, password) values (#{username}, #{password})
</insert> <!-- 修改用户名称 -->
<update id="updateUserUsername" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username} where id=#{id}
</update> <!-- 修改用户名称和密码 -->
<update id="updateUserUsernamePassword" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username}, password=#{password} where id=#{id}
</update> </mapper>

MapperDao.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> <!-- 加载java的配置文件 -->
<properties resource="config/db.properties"/> <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="config/User.xml" />
<mapper resource="com/xiaostudy/mybatis/mapper/MapperDao.xml" />
</mappers> </configuration>

SqlMapConfig.xml

测试类

 package com.xiaostudy.mybatis.mapper;

 import java.io.IOException;
import java.io.InputStream;
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 com.xiaostudy.mybatis.domain.User; public class MybatisTest { public static void main(String[] args) throws IOException {
String resource = "config/SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource); // 创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); MapperDao mapperDao = sqlSession.getMapper(MapperDao.class);
List<User> users = mapperDao.findAllUser(); for(User user : users) {
System.out.println(user);
} sqlSession.close();
} }

MybatisTest.java

其中较没代理的区别是


mybatis的操作数据库基础的更多相关文章

  1. JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  2. 使用mybatis plus 操作数据库

    mybatis plus 是基于mybatis 的一个增强包,比 mybatis 更加容易使用. 特点: 1.分页支持 2.支持自定义查询. 3.简单的情况下,不需要写map.xml 文件 4.支持租 ...

  3. 前端笔记之服务器&Ajax(中)MySQL基础操作&PHP操作数据库&Ajax

    一.数据库基础 1.1什么是数据库? 什么是数据库? 答:就是一个很大的一个文件,只不过这个文件可以通过一些‘命令’操作数据: 增.删.改.查数据: 数据库等于持久数据和数据操作的一个统称. 数据库是 ...

  4. MySQL数据库----基础操作

    一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...

  5. Mybatis注解方法操作数据库

    Java中使用Mybatis操作数据库主要有两种方法:注解和xml配置,注解相对比较简单和方便,两种方式的效果一致.本文以注解的方式说明用Mybatis访问数据库的方法 一.创建数据表(MySql) ...

  6. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  7. C# IV: 数据库基础操作2

    需上一篇C# III:数据库基础操作 另外一个经常碰到的数据库操作是,单次执行多个SQL语句,譬如,一次性插入多条数据. 方法一,拼凑长SQL语句 拼凑长SQL语句实际上是String的操作.如下示例 ...

  8. JavaWeb_(Spring框架)整合Mybatis加入事务操作数据库

    整合Mybatis a)导包: i.Spring:基本包.aop.aspects.jdbc.tx.test: ii.Mybatis:mybatis-3.4.6 iii.整合包:mybatis-spri ...

  9. MySQL关系型数据库基础操作

    MySQL基础 一.MySQL常用数据类型 1.常用数值类型(INT,DOUBLE,FLOAT) ① int 或者 integer 类型: 大小(字节):4字节: 范围: (有符号: -2147483 ...

随机推荐

  1. 购物车 cookie session

    0-服务器识别用户的目的:服务器存有不同用户的信息,而对这些信息,服务器自身.网站开发管理者.网站访问者会对其读写: 1-暂且存入服务器数据库,购物车分为2种表:购物车入车表和购物车下单表: 2-单个 ...

  2. 前端开发 - JQuery&Bootstrap - 总结

    一.JavaScript和Jquery的区别 1.javascript的缺点: 1.书写繁琐,代码量大 2.代码复杂 3.动画效果,很难实现.使用定时器 各种操作和处理 2.定义: 1.Javascr ...

  3. 安装串口设备驱动时遇到 Windows 无法验证此设备所需的驱动程序的数字签名。最近的硬件或软件更改安装的文件可能未正确签名或已损坏,或者可能是来自未知来源的恶意软件. 问题该如何处理?

    win7 系统直接在 cmd 命令行中输入以下语句,重启电脑后重新安装驱动即可. BCDEDIT -SET LOADOPTIONS DISABLE_INTEGRITY_CHECKS BCDEDIT - ...

  4. Flume简介及使用

    一.Flume概述 1)官网地址 http://flume.apache.org/ 2)日志采集工具 Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据.它具有基于流数据 ...

  5. 饭卡---hdu2546(01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 这是一个变形的01背包问题,首先如果金额小于5元,剩余金额不变,为已有金额.如果大于等于5元 我 ...

  6. Python并行编程(四):线程同步之RLock

    1.基本概念 如果想让只有拿到锁的线程才能释放该锁,那么应该使用RLock()对象.当需要在类外面保证线程安全,又要在类内使用同样方法的时候RLock()就很使用. RLock叫做Reentrant ...

  7. git零散知识

    集中式与分布式的差别: 集中式的服务器挂了所有人都挂了,因为完整仓库只存在服务器上,分布式如果github挂了你可以重新建一个服务器,然后把任何一个人的仓库clone过去 一句话总结:分布式版本控制的 ...

  8. Linux服务器上监控网络带宽命令

    本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带 ...

  9. HTML5游戏开发系列教程7(译)

    原文地址:http://www.script-tutorials.com/html5-game-development-lesson-7/ 今天我们将完成我们第一个完整的游戏--打砖块.这次教程中,将 ...

  10. 在Windows上安装Elasticsearch 5.x

    在Windows上安装Elasticsearch 5.x 自己想学习Elasticsearch,但是又不懂Linux,按照同事给的Linux安装教程,也是搞不明白,于是想先在Windows上安装一下入 ...