mybatis学习笔记(二)增删改查
来源:互联网 发布:北京育知同创怎么样 编辑:程序博客网 时间:2024/06/01 09:59
作为持久层框架,mybaits作用和hibernate一样,无非就是对数据库进行增删改查操作,下面我们通过4个实例感受一下。其实也就是增删改查,掌握这些,基本上就掌握了mybatis的基本操作了,下面一个个模块来完成。
先看下工程整体内容:
在这个工程下将完成增删改查代码演示。
1 mybatis核心配置文件
<?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> <settings> <!-- changes from the defaults for testing --> <setting name="cacheEnabled" value="false" /> <setting name="useGeneratedKeys" value="true" /> <setting name="defaultExecutorType" value="REUSE" /> </settings> <typeAliases> <typeAlias alias="TbUser" type="org.liyb.mybatis.model.TbUser"/> </typeAliases> <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/springstud"/> <property name="username" value="mysql"/> <property name="password" value="mysql"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/liyb/mybatis/dao/TbUserMapper.xml" /> </mappers> </configuration>
以上这些环境配置(标签中的内容在以后和spring整合后,都会交给Spring来管理,现在暂时交给 mybatis来管理)中,修改成自己数据库相对应的情况即可,标签用来配置映射文件的,这些映射文件是针对不同的pojo的,这个示例中只操作一个User对象,所以只有一个配置文件,在sqlmap目录下的TbUserMapper.xml,在下文中可以看到。最后来看一下整个环境的结构:
程序的编写
创建pojo类:
package org.liyb.mybatis.model;public class TbUser { private String uname; private String name; private String phone; private String password; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } ...
插入用户数据
<?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="org.liyb.mybatis.dao.TbUserMapper" > <resultMap id="BaseResultMap" type="org.liyb.mybatis.model.TbUser" > <id column="uname" property="uname" jdbcType="VARCHAR" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="phone" property="phone" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> </resultMap> <!-- 20160523 增添用户--> <insert id="insertUser" parameterType="org.liyb.mybatis.model.TbUser" > insert into tb_user (uname, name, phone, password) values (#{uname,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}) </insert></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" ><mapper namespace="org.liyb.mybatis.dao.TbUserMapper" > <resultMap id="BaseResultMap" type="org.liyb.mybatis.model.TbUser" > <id column="uname" property="uname" jdbcType="VARCHAR" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="phone" property="phone" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> </resultMap> <!-- 20160523 增添用户--> <insert id="insertUser" parameterType="org.liyb.mybatis.model.TbUser" > insert into tb_user (uname, name, phone, password) values (#{uname,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}) </insert> <!-- 根据name查询 --> <select id="selectByPrimaryKey" parameterType="String" resultType="org.liyb.mybatis.model.TbUser"> select * from tb_user where uname = #{name} </select></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" ><mapper namespace="org.liyb.mybatis.dao.TbUserMapper" > <resultMap id="BaseResultMap" type="org.liyb.mybatis.model.TbUser" > <id column="id" property="uname" jdbcType="VARCHAR" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="phone" property="phone" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> </resultMap> <!-- 20160523 增添用户--> <insert id="insertUser" parameterType="TbUser" > insert into tb_user (id, name, phone, password) values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}) </insert> <!-- 根据name查询 --> <select id="selectByUserName" parameterType="String" resultType="org.liyb.mybatis.model.TbUser"> select * from tb_user where id = #{name} </select> <!-- 修改用户名称 --> <update id="updateByUserName" parameterType="TbUser"> update tb_user set name=#{name},phone=#{phone},password=#{password} where id=#{id} </update></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" ><mapper namespace="org.liyb.mybatis.dao.TbUserMapper" > <resultMap id="BaseResultMap" type="org.liyb.mybatis.model.TbUser" > <id column="id" property="uname" jdbcType="VARCHAR" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="phone" property="phone" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> </resultMap> <!-- 20160523 增添用户--> <insert id="insertUser" parameterType="TbUser" > insert into tb_user (id, name, phone, password) values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}) </insert> <!-- 根据name查询 --> <select id="selectByUserName" parameterType="String" resultType="org.liyb.mybatis.model.TbUser"> select * from tb_user where id = #{name} </select> <!-- 修改用户名称 --> <update id="updateByUserName" parameterType="TbUser"> update tb_user set name=#{name},phone=#{phone},password=#{password} where id=#{id} </update> <!-- 根据用户id删除用户信息 --> <update id="deleteUserById" parameterType="String"> delete from tb_user where id=#{id} </update></mapper>
至此增删改产全部实现,下面贴出全部代码。
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> <settings> <!-- changes from the defaults for testing --> <setting name="cacheEnabled" value="false" /> <setting name="useGeneratedKeys" value="true" /> <setting name="defaultExecutorType" value="REUSE" /> </settings> <typeAliases> <typeAlias alias="TbUser" type="org.liyb.mybatis.model.TbUser"/> </typeAliases> <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/springstud"/> <property name="username" value="mysql"/> <property name="password" value="mysql"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/liyb/mybatis/dao/TbUserMapper.xml" /> </mappers> </configuration>
TbUserMapper.java
package org.liyb.mybatis.dao;import org.liyb.mybatis.model.TbUser;public interface TbUserMapper { TbUser selectByUserName(String uname); int updateByUserName(TbUser user); public void insertUser(TbUser user); public TbUser getUser(String name); void deleteUserById(String id);}
TbUserMapper.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> <settings> <!-- changes from the defaults for testing --> <setting name="cacheEnabled" value="false" /> <setting name="useGeneratedKeys" value="true" /> <setting name="defaultExecutorType" value="REUSE" /> </settings> <typeAliases> <typeAlias alias="TbUser" type="org.liyb.mybatis.model.TbUser"/> </typeAliases> <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/springstud"/> <property name="username" value="mysql"/> <property name="password" value="mysql"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/liyb/mybatis/dao/TbUserMapper.xml" /> </mappers> </configuration>
TbUser.java
package org.liyb.mybatis.model;public class TbUser { private String id; private String name; private String phone; private String password; public TbUser(){ } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public TbUser(String id,String name,String phone,String password){ this.id = id; this.name = name; this.phone = phone; this.password = password; }}
测试类:
package test.mybatis;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.liyb.mybatis.dao.TbUserMapper;import org.liyb.mybatis.model.TbUser;public class TestMyBatis { public static SqlSessionFactory sqlSessionFactory = null; static{ sqlSessionFactory = MyBatisUtil.getSqlsessionfactory(); } /** * *author: lee by 2016年6月20日 *description:mybatis插入用户数据 *@param *@return void */ public static void testAdd() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { TbUserMapper userMapper = sqlSession.getMapper(TbUserMapper.class); TbUser user = new TbUser("liybk", "liyb","18601387505","123"); userMapper.insertUser(user); sqlSession.commit();// 这里一定要提交,不然数据进不去数据库中 } finally { sqlSession.close(); } } /** * *author: lee by 2016年6月20日 *description:mybatis根据姓名查询用户 *@param *@return void */ public static void testQuery(String name){ SqlSession sqlSession = sqlSessionFactory.openSession(); try{ TbUserMapper userMapper = sqlSession.getMapper(TbUserMapper.class); TbUser users = userMapper.selectByUserName(name); System.out.println("该用户的姓名是:"+users.getName()+" ,手机号码为:"+users.getPhone()); }finally{ sqlSession.close(); } } public static void testUpdate(String id){ SqlSession sqlSession = sqlSessionFactory.openSession(); try{ TbUserMapper userMapper = sqlSession.getMapper(TbUserMapper.class); TbUser user = userMapper.selectByUserName(id); user.setName("songzhihui3"); int count = userMapper.updateByUserName(user); sqlSession.commit(); System.out.println(count); }finally{ sqlSession.close(); } } public static void testDelete(String id){ SqlSession sqlSession = sqlSessionFactory.openSession(); try{ TbUserMapper userMapper = sqlSession.getMapper(TbUserMapper.class); userMapper.deleteUserById(id); sqlSession.commit(); }finally{ sqlSession.close(); } } public static void main(String[] args){ //TestMyBatis.testAdd(); //TestMyBatis.testQuery("liybk"); //TestMyBatis.testUpdate("songzh2"); TestMyBatis.testDelete("songzh2"); }}
基于maven工程的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.liyb.mybatis.stud</groupId> <artifactId>mybatisHelloWorld</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- mybatis-generator --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build></project>
0 0
- mybatis学习笔记(二)增删改查
- mybatis学习笔记(二) --- 熟悉增删查改
- (二)mybatis学习之入门增删改查
- MyBatis学习(二)-增删改查基于XML
- mybatis学习笔记二(实现数据的增删改查)
- MyBatis学习笔记(三)---增删改查
- mybatis学习笔记(七)增删改查
- MyBatis(二)增删改查
- mybatis学习(三)--增删改查
- Mybatis笔记之二 -- 简单的增删改查
- MyBatis笔记二-增删改查-事务-简单的多表联查
- mybatis学习入门使用注解增删改查(二)
- Mybatis学习系列之(二)---crud(即增删改查)
- Mybatis学习笔记三:实现增删查改
- 【知了堂学习笔记】myBatis实现增删查改
- Mybatis学习笔记-第一个增删改查的程序
- Mybatis入门学之增删改查(二)
- 浅谈MyBatis 之 增删改查(CRUD) (二)
- [Leetcode]Nim Game
- JVM参数--GC
- .tar.xz
- Android Studio里面的Build.gradle的详细配置说明
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- mybatis学习笔记(二)增删改查
- android webview中调用了js的时候混淆失效问题
- HTTP状态码
- SpringMVC自定义注解的方式AOP实现 日志管理
- Android Studio常用快捷键说明
- Cannot find or open the PDB file
- Oracle学习01【持续更新】
- Bugtags 2016-06-16 更新内容
- 数据库数据根据每个字段的排名