侧边栏壁纸
博主头像
Johnny博主等级

学无先后,达者为师

  • 累计撰写 11 篇文章
  • 累计创建 4 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

JavaEE

Johnny
2022-05-20 / 0 评论 / 0 点赞 / 56 阅读 / 1,825 字

MyBatis

MyBatis快速入门

MyBatis配置文件

XML构建SqlSessionFactory
<?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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://XXXX:XXXX/xxx?useSSL=false"/>
                <property name="username" value="XXXX"/>
                <property name="password" value="xxxx"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载SQL映射文件-->
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

在property中主要设置property中的驱动、数据库url、数据库账号密码等

在mapper中设置SQL的映射文件,[mapper的详细使用]=====


设置SQL映射文件
<?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="test">
    <select id="selectAll" resultType="mybatis_demo.User">
    <!--SQL语句-->
        select * from tb_user;
    </select>
</mapper>

其中 namespace类比于一个类,id类比这个类中的方法,在之后的代理调用会使用到。

resultType是数据封装后的对象类型。

注意:这里的SQL语句可能会存在警告,需要在idea中配置database

Mybatis快速使用

		//1.导入配置文件
		String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2.获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3.执行
        List<User> users = sqlSession.selectList("test.selectAll");

        Iterator<User> iterator = users.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next().toString());
        }
        sqlSession.close();

Mapper代理开发

原本使用mybatis运行sql

List<User> users = sqlSession.selectList("test.selectAll");

通过代理开发

//1.获取接口代理
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

//2.执行方法
List<User> users = userMapper.selectAll();

/*
** 1.其中的UserMapper是一个接口类,需要自己创建,通过.class映射
** 2.得到接口代理后直接调用其中的id
*/

新建接口类

​ 在resources中新建一个与main/java中接口类的路径相同的文件夹,并且使得Mapper的xml文件与java中接口类相同

12

接口类里的返回对象为resultType,方法名为id

将原来第三步骤的代码改为

UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.selectAll();

在配置XML文件

将XML文件中的namespace改为接口所在的路径

在mybatis-config.xml中mapper中的xml文件路径更改为xml的Path From Source root路径

然后就可以跑起来了!!

Mybatis完成增删改查

前面忘记说了Maven的pom.xml也要配置

导入依赖

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

查询

select * from XXX. 这个就不多说了

数据库列的名称与java中参数的名称不一致:
<!--定义一个resultMap-->
    <resultMap id="brandResultMap" type="mybatis_demo.Brand">
        <result column="company_name" property="companyName"/>
    </resultMap>

<!--在查询开头加入 resultMap的ID-->
    <select id="selectAll" resultType="mybatis_demo.Brand" resultMap="brandResultMap">
        select * from tb_brand;
    </select>

或者在sql语句中加入as对列名重命名

需要参数
<select id="selectById" resultMap="brandResultMap" resultType="mybatis_demo.Brand" parameterType="int">
        select * from tb_brand where id = #{id};
</select>

在接口中定义

Brand selectById(int id);
多条件查询

接口声明

List<Brand> selectByCondition(@Param("status")int status,@Param("companyName")String companyName,@Param("brandName")String brandName);

List<Brand> selectByCondition(Brand brand);
List<Brand> selectByCondition(Map map);//说明一下这里 Map put进去的键值对,键就是占位符的名称,值就是值了。。。。

映射器设置

<select id="selectByCondition" resultType="mybatis_demo.Brand" resultMap="brandResultMap">
        SELECT * FROM tb_brand
        WHERE
            status = #{status}
            AND companyName LIKE #{companyName}
            AND companyName LIKE #{brandName}
</select>

其中Param中的参数名与映射器中的名字是对应的

这里注意一下在类中调用selectByCondition方法的时候,传入String时需要在字符前后加上%,比如传入String companyName时,需要写为%华为%

mybatis还有一些很方便的sql语法规则可以看官方文档

增加

返回添加数据的主键

<insert id="add" useGeneratedKeys="true" keyProperty="id">

keyProperty就会绑定到传入对象的id中

修改

这个就老老实实地写sql语句

有一点就是mybatis有一个set标签可以用

用if标签判断传入的几个参数,来确保没传入的参数不会设置成null

删除

需要注意的就是批量删除

<delete id="deleteByIds">
        DELETE FROM tb_brand WHERE id in
                            <foreach collection="array" item="idd" open="(" close=")" separator=",">
                                #{idd}
                            </foreach>
    </delete>

其中array是固定的,如果不想写array需要在声明方法的时候写上

void deleteByIds(@Param("ids")int[] ids);

前端三件套

之前看过head first的html和css感觉一般,同时觉得前端三件套的学习真的需要通过实例操作去学,哪里不会就搜哪里,这里就无笔记了。

HTTP网络协议

之后再另开一个写。

Tomcat

Tomcat基本使用

修改启动端口号

在conf/server.xml下

<Connector port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443" />

部署资源

放到webapps中,java项目可以打包成为war再放入。

IDEA集成Tomcat

通过XML导入插件

<build>
        <plugins>
            <!--Tomcat 插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/tomcat-demo2</path>
                </configuration>
            </plugin>

        </plugins>
    </build>

Servlet

快速入门

1.创建web项目,导入Servlet依赖

<dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

注意<scope>provided</scope>访问有效范围修改

2.创建类,实现Servlet接口

public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello servlet!");
    }

3.加上@WebServlet注解,配置访问路径

0

评论区