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. centos7虚拟机克隆

    第一步:克隆 打开VMware,确认已经完成安装配置的centos7虚拟机在关闭状态. 右键点击虚拟机,选择“管理”-“克隆” 原始虚拟机名称为“master”,IP地址为“192.168.80.10 ...

  2. python脚本前两行

    1. 第一行指定解释器路径 推荐写法: #!/usr/bin/env python 详细说明: #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python ...

  3. vim符号列表

    Exuberant Ctags工具安装 • 软件简介 Ctags generates an index (or tag) file of language objects found in sourc ...

  4. python全栈开发从入门到放弃之内置函数

    1.locals.globals def func(): x = 1 y = 2 print(locals()) #打印局部作用域中的名字 print(globals()) #打印全局作用域中的名字 ...

  5. A class for dynamic icons in Windows

    A class for dynamic icons in Windows #include <windows.h> class DynamicIcon {public:  DynamicI ...

  6. Leetcode 357

    没用过Leetcode刷题,只能按照自己的想法随便写写了 思路:1.第一位数有9种(除了0)可能,第二位数有9种(除了第一位)可能,第三位数有8种(除了前两位)可能,以此类推...9*8*7*...( ...

  7. ruby lib文件夹作用

    require 'lib/test_module' #lib/test_module.rb module TestModule end

  8. 跨域问题-cors

    什么是跨域如大家所知,出于安全考虑,浏览器会限制脚本中发起的跨站请求.比如,使用 XMLHttpRequest 对象发起 HTTP 请求就必须遵守同源策略(same-origin policy). 具 ...

  9. error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1700”

    原因:由于你使用了vs2012,相比较vs2010以及之前的vs为更高版本,致使msvc不兼容! 方法:在项目右键属性-配置属性-常规中,平台工具集选用为合适平台即可,我这里就选择 vs2010 (v ...

  10. 714. Best Time to Buy and Sell Stock with Transaction Fee

    问题 给定一个数组,第i个元素表示第i天股票的价格,可执行多次"买一次卖一次",每次执行完(卖出后)需要小费,求最大利润 Input: prices = [1, 3, 2, 8, ...