mybatis学习入门使用注解增删改查(二)
来源:互联网 发布:python博客 编辑:程序博客网 时间:2024/06/06 01:00
1:User
package com.mybatis.domain;
//users表所对应的实体类
public class User {
//实体类的属性和表的字段名称一一对应
private Integer id;
private String name;
private Integer age;
public User() {
}
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public User(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
2:UserMapper
package com.mybatis.dao;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.mybatis.domain.User;
//不需要编写接口的映射文件,直接使用注解
public interface UserMapperAnnotation {
@Select("select id,name,age from users where id= #{id}")
public User getUserById(Integer id);
@Insert("insert into users(name,age) values(#{name},#{age})")
public void addUser(User user);
@Delete("delete from users where id=#{id}")
public void deleteUserById(Integer id);
@Update("update users set name=#{name},age=#{age} where id=#{id}")
public void updateUser(User user);
@Select("select id,name,age from users")
public List<User> getAllUsers();
}
3: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>
<!--
mybatis可以使用properties标签引用外部属性文件(数据源)
resource:引用类路径下文件位置
url:引用:磁盘上的路径下文件位置
-->
<properties resource="dbconfig.properties"></properties>
<!--
settings包含很多重要的设置项
setting:用来设置每一个设置项
name:设置项名
value:设置项取值
-->
<settings>
<!-- 是否开启驼峰命名:自动将数据表字段名dept_id与JavaBean的属性名deptId对应 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 由于mybati默认:jdbcTypeForNull=OTHER ,可以设置为NULL-->
<setting name="jdbcTypeForNull" value="NULL"/>
<!-- 懒加载(延迟加载) 开启懒加载,使用时再加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 立即加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<typeAliases>
<!-- typeAliases:给Java类起别名,避免包.类名太繁琐(别名不区分大小写)
type:指定要起别名的类的全类名;默认别名是类名小写
alias:指定新的全类名
-->
<!-- <typeAlias alias="employee" type="com.mybatis.bean.Employee"/> -->
<!-- package:批量起别名
name为某个包下的所有类以及子包起一个别名,默认别名:类名小写
在批量起别名的情况下:为了避免包以及子包下的类冲突,可以直接在类上使用注解Alias(emp)起别名
建议:不起别名,resultType:直接使用全类名(包.类名)
-->
<package name="com.mybatis.bean"></package>
</typeAliases>
<!-- environments:mybatis可以配置多种环境
environment:配置一个具体的环境
transactionManage type:事务管理器的类型两种:JDBC(JDBC启动),MANAGER(服务器启动)
dataSource type:UNPOOLED(不使用数据库连接池),POOLED(使用数据库连接池),JDNI
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- mybatis支持多个数据库厂商 :type:得到数据库厂商的表示-->
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同数据库厂商起别名 -->
<property name="MySQL" value="mysql"/>
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>
<mappers>
<!-- 将写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中-->
<!-- mapper:注册一个sql映射
resource:引用类路径的sql映射文件
uri:应用网络路径或磁盘路径下的路径
一般开发时:配置文件:写在包路径下 mybatis/mapper/EmployeeMapper.xml
class:注册接口的路径:包.类名(sql映射文件必须与接口同名,并且放在与接口同一目录下)
class属性还可以:mybatis:可以不用写配置文件,所有sql语句直接在类中方法上使用注解方式(参数为sql语句)
@Select,@Insert,@Update,@Delete
但是:建议
比较重要的:复杂的Dao接口:使用sql映射置文件
不重要的,简单的Dao接口为了快速开发可以使用注解
-->
<!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/>
<mapper class="com.mybatis.dao.EmployeeMapperAnnotation"/> -->
<!-- package批量注册 :-注册某个包下的所有类以及子类,要求类映射的sql文件与类在同一个包下 -->
<package name="com.mybatis.dao"/>
</mappers>
</configuration>
4:TestMybatisAnnotation
package com.mybatis.test;
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 org.junit.Test;
import com.mybatis.dao.UserMapperAnnotation;
import com.mybatis.domain.User;
public class TestMybatisAnnotation {
public SqlSessionFactory getSqlSessionFactory() throws IOException{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
/**
* 1:根据xml配置(全局配置文件)文件创建一个SqlSessionFactory对象
* 2:sql映射文件,配置了每一个sql,已经sql的封装规则,
* 3:将sql映射文件注册到全局配置文件中
* 4:通过全局配置文件得到SqlSessionFactory
* SqlSessionFactory中获取一个Session实例对象,能够直接执行已经映射的sql语句进行CRUD
* 一个SqlSessionFactory代表了与数据库的一次会话,用完关闭
* @throws IOException
*/
//接口式编程
@Test
public void testSelect() throws IOException{
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
SqlSession session=sqlSessionFactory.openSession();
//获取接口的实现类对象:session.getMapper(接口.class)
//将一个接口与一个xml配置文件进行绑定,mybatis会自动为接口创建一个代理类对象
//代理类对象去执行CRUD操作
try {
UserMapperAnnotation mapper=session.getMapper(UserMapperAnnotation.class);
User user=mapper.getUserById(1);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
@Test
public void testInsert() throws IOException{
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
SqlSession session=sqlSessionFactory.openSession();
//获取接口的实现类对象:session.getMapper(接口.class)
//将一个接口与一个xml配置文件进行绑定,mybatis会自动为接口创建一个代理类对象
//代理类对象去执行CRUD操作
try {
UserMapperAnnotation mapper=session.getMapper(UserMapperAnnotation.class);
User user=new User("SpringMVC",8);
mapper.addUser(user);
session.commit();//需要手动提交
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
@Test
public void testUpdate() throws IOException{
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
SqlSession session=sqlSessionFactory.openSession();
//获取接口的实现类对象:session.getMapper(接口.class)
//将一个接口与一个xml配置文件进行绑定,mybatis会自动为接口创建一个代理类对象
//代理类对象去执行CRUD操作
try {
UserMapperAnnotation mapper=session.getMapper(UserMapperAnnotation.class);
User user=new User(1,"Spring",9);
mapper.updateUser(user);
session.commit();//需要手动提交
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
@Test
public void testDelete() throws IOException{
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
SqlSession session=sqlSessionFactory.openSession();
//获取接口的实现类对象:session.getMapper(接口.class)
//将一个接口与一个xml配置文件进行绑定,mybatis会自动为接口创建一个代理类对象
//代理类对象去执行CRUD操作
try {
UserMapperAnnotation mapper=session.getMapper(UserMapperAnnotation.class);
mapper.deleteUserById(3);
session.commit();//需要手动提交
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
@Test
public void testGetAll() throws IOException{
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
SqlSession session=sqlSessionFactory.openSession();
//获取接口的实现类对象:session.getMapper(接口.class)
//将一个接口与一个xml配置文件进行绑定,mybatis会自动为接口创建一个代理类对象
//代理类对象去执行CRUD操作
try {
UserMapperAnnotation mapper=session.getMapper(UserMapperAnnotation.class);
List<User> users=mapper.getAllUsers();
for(User user:users){
System.out.println(user);
}
session.commit();//需要手动提交
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
}
- mybatis学习入门使用注解增删改查(二)
- Mybatis入门学习篇(二)之基于注解的增删改查
- (二)mybatis学习之入门增删改查
- MyBatis使用注解实现增删改查
- mybatis学习入门增删改查(一)
- Mybatis入门--增删改查
- MyBatis(二)增删改查
- Mybatis入门学之增删改查(二)
- mybatis利用注解实现增删改查
- Mybatis-基于注解的增删改查
- Mybatis 注解实例实现增删改查
- MyBatis(四)增删改查--基于注解
- Mybatis入门学习三:实现数据的增删改查
- mybatis学习笔记(二)增删改查
- mybatis学习笔记(二) --- 熟悉增删查改
- Mybatis学习系列之(二)---crud(即增删改查)
- MyBatis学习(二)-增删改查基于XML
- MyBatis第二讲学习笔记 ,使用MyBatis对表执行增删改查操作——基于注解的实现
- js中的DOM
- Ubuntu通过修改配置文件进行网络配置
- 常用的命令行工具安装
- 02. JSP 基本语法
- 游戏开发中的人工智能(十二):概率概论
- mybatis学习入门使用注解增删改查(二)
- mysql数据库操作部分汇总
- SpringMVC对返回值的封装
- jquery事件标准传参
- 算法-硬币找零
- windows到ubuntu的共享环境搭建
- K3后台修改销售模块(销售订单、发货通知单、销售出库单)客户名称语句
- Java-类的加载
- Axure8.0基础教程(21-30)新手必须掌握的基础操作